考虑包裹的对象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);