はじめまして。拙著を読んでいただきありがとうございます。
>しかし、Factory.java内で"import com.sample.libimpl.*"を記載せざるを得ません。
>何を気にしているかというと、Cで言えば、パブリックなヘッダに、プライベートなヘッダを書いているようなコードに見える点です。
>利用者から完全に~impl部分を隠ぺいする一般的な手法はあるのでしょうか。
これは確かにその通りなのですが、私はこれについては
「まあ、Factoryだけはしょうがない」
と考えています。
どこかで実装クラスが何であるかを明示しなければいけない以上、
そこでは実装側のパッケージをimportせざるを得ません。
# 「Java謎+落とし穴~」にどう書いたかと思って見返したら、
# 「実はここが頭の痛いところなのですが~」と書いてますね……
利用者からさらに実装を隠蔽し、状況によって実装クラスを
差し替える手法として、Dependency Injectionという考え方もあります。
ただ、実装をあまり分離しすぎると、それはそれでわかりにくくなったりもします。
https://twitter.com/kudzu/status/862906043591925762
>DI使ってコード書いてるわし「こんな簡潔にモジュラーでテスタブルなコードが書ける!すごい!天才!」
> DI使った他人のコード読んでるわし「おい、これどこから呼ばれてんだよ。わかんねぇぞ。○すぞ。」