大家好,我是洪爵,今天又是设计模式的一天!

​ 之前我们有谈论过工厂模式,那么抽象工厂模式又是什么呢?其实可以简单的概括:工厂模式,是工厂加工出对应的产品;而抽象工厂模式是专门生产工厂的,每个工厂又可以制造自己的产品(有点俄罗斯套娃)。

​ 抽象工厂模式是属于创建型的模式,创建型模式即提供一种最佳的创建对象方式。

​ 抽象工厂模式其实和工厂模式有点类似,我把文章都贴出来了。大家可以对照着看下,我理解大家理解了工厂模式,那么抽象工厂模式其实就是一个模子刻出来的东西。

类图:

我们创建出一个AbstractFactory类,做抽象工厂,每一个工厂都需要去实现这个抽象工厂类,生产这个共产的是FactoryProducer类,根据你的需求返回对应的工厂,每个工厂能生产自己的产品族,这些产品族又是具体实现某一个interface。

上代码:

// AbstractFactory.java
public abstract class AbstractFactory {public abstract Computer getComputer(String computer);public abstract Phone getPhone(String phone);
}// ComputerFactory.java
public class ComputerFactory extends AbstractFactory {public Computer getComputer(String computer) {if(null == computer) {return null;}if("LENOVE".equalsIgnoreCase(computer)) {return new LENOVE();} else if("ASUS".equalsIgnoreCase(computer)) {return new ASUS();}return null;}public Phone getPhone(String phone) {return null;}
}// PhoneFactory.java
public class PhoneFactory extends AbstractFactory {public Computer getComputer(String computer) {return null;}public Phone getPhone(String phone) {if(null == phone) {return null;}if("HUAWEI".equalsIgnoreCase(phone)) {return new HUAWEI();} else if("ZTE".equalsIgnoreCase(phone)) {return new ZTE();}return null;}
}// FactoryProducer.java
public class FactoryProducer {public static AbstractFactory getFactory(String factory) {if("PHONE".equalsIgnoreCase(factory)) {return new PhoneFactory();} else if("COMPUTER".equalsIgnoreCase(factory)) {return new ComputerFactory();}return null;}
}// Phone.java
public interface Phone {void printPhoneName();
}//ZTE.java
public class ZTE implements Phone {public void printPhoneName() {System.out.println("中兴手机");}
}// HUAWEI.java
public class HUAWEI implements Phone {public void printPhoneName() {System.out.println("华为手机");}
}// Computer.java
public interface Computer {void printComputerName();
}// ASUS.java
public class ASUS implements Computer {public void printComputerName() {System.out.println("华硕电脑");}
}// LENOVE.java
public class LENOVE implements Computer {public void printComputerName() {System.out.println("联想电脑");}
}//Client.java
public class Client {public static void main(String[] args) {// 获取手机工厂AbstractFactory phoneFactory = FactoryProducer.getFactory("PHONE");// 手机工厂生产对应品牌手机Phone huawei = phoneFactory.getPhone("HUAWEI");huawei.printPhoneName();Phone zte = phoneFactory.getPhone("ZTE");zte.printPhoneName();// 获取电脑工厂AbstractFactory computerFactory = FactoryProducer.getFactory("COMPUTER");// 电脑工厂生产对应品牌电脑Computer lenove = computerFactory.getComputer("LENOVE");lenove.printComputerName();Computer asus = computerFactory.getComputer("ASUS");asus.printComputerName();}
}
/*
华为手机
中兴手机
联想电脑
华硕电脑
*/

本章节有关于抽象工厂模式的内容就到这里啦!希望对你有帮助哦~

愿每个人都能带着怀疑的态度去阅读文章并探究其中原理。

道阻且长,往事作序,来日为章。

期待我们下一次相遇!

抽象工厂模式,加工出不可思议的产品!相关推荐

  1. 设计模式---4(抽象工厂模式的概念,产品组和产品等级的概念,抽象工厂模式的实现)

    抽象工厂模式 抽象工厂模式的概念 抽象工厂模式是所有形态的工厂模式中最为抽象和最其一般性的.抽象工厂模式可以向 客户端提供一个接口,使得客户端在不必指定产品的具体类型的情况下,能够创建多个产品 族的产 ...

  2. 【设计模式】抽象工厂模式 ( 简介 | 适用场景 | 优缺点 | 产品等级结构和产品族 | 代码示例 )

    文章目录 一.抽象工厂模式简介 二.抽象工厂模式适用场景 三.抽象工厂模式优缺点 四.产品等级结构和产品族 五.抽象工厂模式代码示例 1.冰箱抽象类 2.美的冰箱实现类 3.格力冰箱实现类 4.空调抽 ...

  3. 设计模式C#描述之——简单工厂模式、抽象工厂模式、单例与多例模式

    设计模式C#描述之--简单工厂模式 前 言:设计模式是软件开发领域的精髓之一.学好设计模式是目前每一个开发人员的必修课.目前关于设计模式的书很多,其中比较好的有GOF那本的中译本,但并 不很适合初学者 ...

  4. Java设计模式-工厂方法模式和抽象工厂模式

    工厂方法模式定义: 即定义一个创建对象的接口(即抽象工厂类),让其子类(具体工厂类)决定实例化哪一个类(具体产品类)."一对一"的关系 1,一抽象工厂类派生出多个具体工厂类: 2, ...

  5. 设计模式:工厂方法模式(Factory Method)和抽象工厂模式(Abstact Factory)

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

  6. 系统架构技能之设计模式-抽象工厂模式

    一.上篇回顾 上篇我们主要讲述了简单工厂模式和工厂模式.并且分析了每种模式的应用场景和一些优缺点,我们现在来回顾一下: 简单工厂模式:一个工厂负责所有类型对象的创建,不支持无缝的新增新的类型对象的创建 ...

  7. 对设计模式的总结之工厂方法模式和抽象工厂模式

    前言 面向对象编程追求的本质-提高扩展性.可维护性.灵活性和复用性.合理利用面向对象6个原则,能够很好的达到要求.如何利用好就是至关重要的了,前人总结了23+个设计模式能够让初学者更容易学到其中的精髓 ...

  8. 设计模式(三):旅行的角度理解抽象工厂模式

    之前的文章介绍了工厂模式,这篇文章介绍工厂模式的强化版本抽象工厂模式(Abstract Factory Pattern) . 我们知道工厂模式是用于在延迟创建具体的对象,抽象工厂模式可以看作是面向工厂 ...

  9. 【软件设计模式】工厂模式(简单工厂模式、一般工厂模式、抽象工厂模式)

    概述: 工厂模式把对象的创建交由某个特定的类来实现,该类为工厂类,该类的方法称为工厂方法,仅仅负责创建对象,从而将客户端复杂的对象创建语句实现解耦.责任分离,方便扩展和维护. 分类: 工厂模式分为简单 ...

  10. 23种设计模式——抽象工厂模式

    目录 抽象工厂模式(AbstractFactory) 产品族 理解 UML图 优缺点 应用场景 抽象工厂模式VS和工厂模式 实例 数据访问(工厂方法) 数据访问(抽象工厂) 用简单工厂改造抽象工厂 C ...

最新文章

  1. fseek/ftell/rewind/fgetpos/fsetpos函数使用-linux
  2. linux ftp图片服务器,linux ftp 图片服务器
  3. Storm 06_Storm 容错机制
  4. SAP UI5 初学者教程之六 - 了解 SAP UI5 的模块(Module)概念试读版
  5. git中reset与revert的区别
  6. 【Web】JavaWeb开发技术笔记整理
  7. ag-grid 表格中添加图片
  8. java并发AtomicReference
  9. 业界红包玩法与技术方案总结
  10. OpenCV3的GPU模块编译
  11. 欲报从速,已有56所高校选择云创大学高质量免费直播授课!
  12. E - Stripies
  13. MSP430如何使用energia(TI公司的arduino简易编译器)
  14. 关于VMWare Data Protection VDP的使用心得
  15. 反种族主义算法的偏见与警务简介
  16. 灌水滴~~ 讨论下怎样用电脑上手机3GQQ的西游
  17. TZOJ 7034: 竹取飞翔 ~ Lunatic Princess 并查集+数学。
  18. 每日站立会议个人博客(冲刺周)-Saturday
  19. linux下不解包查看tar包文件内容
  20. 【每日一题】027 奇妙的数字

热门文章

  1. 学生专用计算机abs什么意思,出现abs标志什么意思
  2. java物联网第三天 智慧农业物联网
  3. ubuntu系统清理垃圾
  4. 《墨菲定律》读书笔记之第一章——成功学的秘密
  5. 成功解决We recommend that if you want Anaconda registered as your system Python, you unregister this Pyt
  6. 电脑系统能ping通但不能上网怎么办
  7. oracle按相同年份_英语表达方式有几个类型,时间和日期表达都是不相同的
  8. sping循环依赖:but has eventually been wrapped. This means that said other beans do not use the final
  9. 外贸常用术语_常用外贸术语大全
  10. 计算机爱情诗,优美诗句大全