ラップされたオブジェクトDataContainer
がクライアントに渡されることを考慮してください
// Will be handed out
public interface DataContainer
それを使用するために、クライアントは現在、オブジェクトを次のようにキャストすることを知る必要があります。
public interface ConcreteObject_1_Container extends DataContainer
public interface ConcreteObject_2_Container extends DataContainer
オプションを選択する方法と同様に、 と の両方を選択可能なオプションとして提供することは可能ConcreteObject1Container
ですか?ConcreteObject2Container
Enum
ユーザーが魔法のように使用することを知っている代わりにFileContainer
// user knows
FileContainer fileContainer = (FileContainer)
ContainerFactory.getContainerFor(DataSource.FILE,
TREAT_AS_SOURCE);
そうしたいです。
// user selects
FileContainer fileContainer = (GenericContainer.FileContainer)
ContainerFactory.getContainerFor(DataSource.FILE,
TREAT_AS_SOURCE);