如何应对这种灵活性要求?分析具体的需求,我们可以发现,对客户Client来说需要同时实现工厂的灵活性和产品的灵活性。所以,我们提供了两套接口:一是表现出稳定的工厂行为(创建不同的对象)的工厂接口,二是表现出稳定产品行为的产品接口。从而,实现了工厂多态和产品多态。
工厂接口既使得原本分布于代码各处的多种对象的实例化集中到具体的工厂内部,又隔离了“对象实例化的组合”的变化。
客户Client通过抽象工厂接口的方法得到ProductA和ProductB的实例,再利用产品接口来灵活使用具体的产品。
如何应对这种灵活性要求?分析具体的需求,我们可以发现,对客户Client来说需要同时实现工厂的灵活性和产品的灵活性。所以,我们提供了两套接口:一是表现出稳定的工厂行为(创建不同的对象)的工厂接口,二是表现出稳定产品行为的产品接口。从而,实现了工厂多态和产品多态。
工厂接口既使得原本分布于代码各处的多种对象的实例化集中到具体的工厂内部,又隔离了“对象实例化的组合”的变化。
客户Client通过抽象工厂接口的方法得到ProductA和ProductB的实例,再利用产品接口来灵活使用具体的产品。