设计模式-抽象工厂模式-天天快播
发布日期: 2023-05-04 06:26:25 来源: 腾讯云
(资料图)
抽象工厂模式
抽象工厂模式是一种创建型设计模式,它提供了一种创建一系列相关或依赖对象的方式,而无需指定它们具体的类。这种模式利用工厂接口和抽象类来实现。
在抽象工厂模式中,我们定义一个抽象工厂接口,该接口声明了一些方法用于创建不同类型的对象。然后我们实现该接口的具体工厂类,每个工厂类都能够创建一组相关对象,但这些对象的具体类型是未知的。最后,我们使用这些工厂类创建具体的对象,并将其用于实现我们的应用程序。
优点
抽象工厂模式分离了具体类的创建和使用,使得客户端代码不需要知道具体类的名称。由于抽象工厂模式使用了工厂接口和抽象类,因此它可以轻松地替换具体工厂类和具体产品类。抽象工厂模式使得系统更加灵活,能够适应不同的需求。缺点
如果需要添加新的产品类,那么需要修改抽象工厂接口及其所有的实现类。在添加新产品族时,需要添加新的工厂类,这可能会导致类的数量增加。适用场景
一个系统需要独立于它所创建的对象的方式来创建一系列相关或依赖对象时。一个系统需要一组相关对象,但是它不关心这些对象的类是什么时。一个系统需要由多个产品族中的一个来配置时。当你想要提供一组相关产品的接口,而不是仅仅是一组相关产品的实现时。Java代码示例
下面是一个简单的Java代码示例,它演示了如何使用抽象工厂模式来创建一组相关的对象。:
// 实现产品2的具体类1class ConcreteProduct2_1 implements Product2 { public void doSomething() { System.out.println("ConcreteProduct2_1 doSomething"); }}// 实现产品1的具体类2class ConcreteProduct1_2 implements Product1 { public void doSomething() { System.out.println("ConcreteProduct1_2 doSomething"); }}// 实现产品2的具体类2class ConcreteProduct2_2 implements Product2 { public void doSomething() { System.out.println("ConcreteProduct2_2 doSomething"); }}// 客户端代码public class Client { public static void main(String[] args) { // 创建具体工厂类1 AbstractFactory factory1 = new ConcreteFactory1(); // 使用工厂类1创建产品1 Product1 product1_1 = factory1.createProduct1(); product1_1.doSomething(); // 使用工厂类1创建产品2 Product2 product2_1 = factory1.createProduct2(); product2_1.doSomething(); // 创建具体工厂类2 AbstractFactory factory2 = new ConcreteFactory2(); // 使用工厂类2创建产品1 Product1 product1_2 = factory2.createProduct1(); product1_2.doSomething(); // 使用工厂类2创建产品2 Product2 product2_2 = factory2.createProduct2(); product2_2.doSomething(); }}
这个例子中,我们定义了一个抽象工厂接口AbstractFactory,其中包含了创建Product1和Product2两个产品的方法。然后我们实现了两个具体的工厂类ConcreteFactory1和ConcreteFactory2,分别用于创建不同的产品族。每个工厂类都能够创建一组相关的产品,但是它们所创建的具体产品类型是未知的。
我们还定义了两个抽象产品类Product1和Product2,这两个类都包含了一个doSomething()方法,表示这些产品能够完成一些具体的工作。然后我们实现了四个具体的产品类ConcreteProduct1_1、ConcreteProduct2_1、ConcreteProduct1_2和ConcreteProduct2_2,分别用于创建不同的产品。
最后,在客户端代码中,我们创建了具体的工厂类对象,并使用这些工厂类对象来创建具体的产品对象。这样,客户端代码就可以通过工厂类来创建所需的产品,而无需关心这些产品的具体类型。
关键词:
相关内容
- 设计模式-抽象工厂模式-天天快播 a>
- “AI教父”杰弗里·辛顿从谷歌离职,就技术风险发出警告 a>
- 每日观察!再度破万!腾势D9连续4个月蝉联30万元以上新能源豪华MPV销量第一 a>
- 环球关注:美元指数3日显著下跌,收于101.3551 a>
- 打响业绩“翻身仗”,17家上市券商一季度净利翻倍 当前短讯 a>
- 痛心!家长带4名孩子去水库,3人不幸溺亡,事故原因已查明...如何自救? a>
- 热搜!王思聪同款,万元宠物鸭被掳,警察找到时已在高压锅边!嫌疑人:想做老鸭煲当晚饭… a>
- 上海成十大热门旅游目的地 迪士尼部分项目排队时间超过3小时 a>
- 平凡中找寻非凡!带着宏碁非凡Go 14百公里徒步麦理浩径 a>
- 茂南区_关于茂南区的简介-焦点热讯 a>
- 全球简讯:“中国西部发展令人惊叹、期待两国开展各领域合作”——洪都拉斯媒体代表团在黔、渝参访 a>
- 今日要闻!防风险提质增效 银行一季报释放三大重要信息 a>
- 亿华通(02402.HK):5月3日南向资金增持2.72万股 a>
- 环球观点:如何让电脑黑屏一直开着_怎么让电脑黑屏但是不关机 怎么办 a>
- 蔷薇珍宝阁在哪打开(打开它的秘诀在这里)|世界快播报 a>
- 哪吒的简介50字_哪吒的简介-今日关注 a>
- ai中标注尺寸_ai cs6如何标注尺寸|全球头条 a>
- 全球热门:强制催眠圣女本才_强制催眠圣女 a>
- 每日热议!铜版纸怎么算吨 铜版纸克数厚度对照表 a>
- 天天观察:皮卡堂七彩缤纷礼盒能开出什么东西_皮卡堂七彩缤纷礼盒能开出什么 a>