以下のメッセージを削除します。


[2007] Javaの実装の隠ぺいに関して
返信


投稿者:beginner
2017/10/04 09:56:29

Link:

はじめまして、前橋さんの各種書籍で一からからプログラミングの基礎体力づけをさせていただいています。

Javaを使った一般的なコードの書き方で疑問を抱いたことがございます。

下に適当な4つのサンプルプログラムを書きました。
mainを呼び出す利用者にimplの実装を隠ぺいすることを目的としています。
Factoryクラスを経由してインターフェースを返すようにしています。

しかし、Factory.java内で"import com.sample.libimpl.*"を記載せざるを得ません。
何を気にしているかというと、Cで言えば、パブリックなヘッダに、プライベートなヘッダを書いているようなコードに見える点です。
利用者から完全に〜impl部分を隠ぺいする一般的な手法はあるのでしょうか。

もしよろしければ教えていただけますと大変助かります。

プログラミング初心者のため勘違い含んでいたりした場合大変恐縮です。

==================================
$ vi com/sample/Main.java

package com.sample;
import com.sample.lib.*;

class Main{
  public static void main(String[] args){
    Another another = Factory.create();
    another.hello();
  }
}
==================================
$ vi com/sample/lib/Factory.java

package com.sample.lib;
import com.sample.libimpl.*;

public class Factory{
  public static Another create() {
    return new AnotherImpl();
  }
}
==================================
$ vi com/sample/lib/Another.java
package com.sample.lib;

public interface Another {
  void hello();
}
==================================
$ vi com/sample/libimpl/AnotherImpl.java
package com.sample.libimpl;
import com.sample.lib.*;

public class AnotherImpl implements Another {
  public void hello(){
    System.out.println("hello another class");
  }
}
==================================

パスワード:

管理者削除