一、概念
提供一个创建一系列相关或相互依赖对像的接口,而无需指定它们具体的类。
二、模式动机
这一系列对像之间是相互依赖的,相当于一个产品族
三、模式的结构
通过上图我们可以清楚的看到抽像工厂模式包括以下4个角色:
1.抽像工厂角色(AbstractFactory):抽像工厂模式的核心,与具体的商业逻辑无关,通常是一个JAVA接口或者抽像类。
2.具体工厂角色(Concrete Factory):该角色通常与具体的商业逻辑紧密相关,该角色里面的工厂方法依据具体的商业逻辑实例化具体的产品并返回,客户端通过该角色并调用该角色的工厂方法,获得具体产品对像,该角色通常都是一个具体JAVA类来承担。
3.抽像产品角色:担任这个角色的类是工厂方法模式所创建的产品的父类,或者他们共同拥有的接口,通常是一个接口或者抽像类。
4.具体产品角色:抽像工厂模式所创建的任何产品都是这个角色的实例,有一个具体JAVA类来承担。
样例代码如下:
public class AbstractProductA { public AbstractProductA() { }}public class ProductA1 extends AbstractProductA { public ProductA1() { }}public class ProductA2 extends AbstractProductA { public ProductA2() { }}public class AbstractProductB { public AbstractProductB() { }}public class ProductB1 extends AbstractProductB { public ProductB1() { }}public class ProductB2 extends AbstractProductB { public ProductB2() { }}public abstract class AbstractFactory { public AbstractFactory() { } public Abstract AbstractProductA createProductA() ; public Abstract AbstractProductB createProductB() ;}public class ConcreteFactory1 extends AbstractFactory { public ConcreteFactory1() { } public AbstractProductA createProductA() { return new ProductA1(); } public AbstractProductB createProductB() { return new ProductB1(); }}public class ConcreteFactory2 extends AbstractFactory { public ConcreteFactory2() { } public AbstractProductA createProductA() { return new ProductA2(); } public AbstractProductB createProductB() { return new ProductB2(); }}
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数260
191.63 KB下载数245
143.91 KB下载数1139
183.71 KB下载数640
644.84 KB下载数2752