抽象工厂模式--java代码实现
2019-04-26 08:20:34来源:博客园 阅读 ()
抽象工厂模式
抽象工厂模式,对方法工厂模式进行抽象。世界各地都有自己的水果园,我们将这些水果园抽象为一个水果园接口,在中国、英国和美国都有水果园,种植不同的水果,比如苹果、香蕉和梨等。这里将苹果进行抽象,所以,苹果又分为中国苹果,英国苹果和美国苹果。中国的水果园中有苹果、香蕉和梨等。抽象工厂中声明生产苹果、香蕉和梨等水果,那么具体的工厂相当于中国、英国和美国的水果园,各个水果园负责生产水果、香蕉和梨等。
1.相关术语
-
产品等级结构:产品的继承结构,与类的继承相似。例如苹果是一个抽象的类,那么中国苹果、美国苹果和英国的苹果就是其子类。
-
产品族:指同一个工厂生产的,位于不同的产品等级结构的一组产品。例如苹果、香蕉和梨都产自中国,水果的等级结构不同,构成一个产品族。
-
抽象工厂:是一个接口,抽象工厂模式的核心,包含对多个产品等级结构的声明,任何工厂类都必须实现这个接口。
- 具体工厂:是抽象工厂的实现,负责实例化某个产品族中的产品对象。例如中国工厂生产苹果、香蕉和梨这些产品。
4.创建Fruit接口、Apple抽象类、ChinaApple类等
Fruit(interface):
public interface Fruit { public void get(); }
Apple抽象类:
public abstract class Apple implements Fruit{ public abstract void get(); }
ChinaApple类:
public class ChinaApple extends Apple { @Override public void get() { System.out.println("中国的苹果..."); } }
5.创建抽象工厂、具体工厂
抽象工厂:
public interface FruitFactory { //实例化苹果 public Fruit getApple(); //实例化香蕉 public Fruit getBanana(); }
具体工厂:
public class ChinaFactory implements FruitFactory { @Override public Fruit getApple() { return new ChinaApple(); } @Override public Fruit getBanana() { return new ChinaBanana(); } }
public class MainClass { public static void main(String[] args){ //创建中国工厂 FruitFactory chinaFactory = new ChinaFactory(); //通过中国工厂生产中国苹果实例 Fruit apple = chinaFactory.getApple(); apple.get(); //通过中国工厂生产中国香蕉实例 Fruit banana = chinaFactory.getBanana(); banana.get(); //创建英国工厂 FruitFactory englandFactory = new EnglandFactory(); //通过英国工厂生产英国苹果实例 Fruit apple1 = englandFactory.getApple(); apple1.get(); //通过英国工厂生产英国香蕉实例 Fruit banana2 = englandFactory.getBanana(); banana2.get(); } }
8.总结
模式来源于生活。抽象工厂模式,对工厂方法模式进行了升级。对产品进行了进一步的抽象,同时改变了抽象工厂和具体工厂的设计模式。这种模式便于横向的扩展,例如我们想添加一个美国工厂来生产苹果和香蕉,只需要新建美国苹果,美国香蕉和生产这两种水果的具体工厂--美国工厂。缺点就是不利于纵向的扩展,例如我们想在工厂中生产梨,这就需要修改抽象工厂,各个具体工厂也同时需要修改。
参考B站视频https://www.bilibili.com/video/av34162848。
原文链接:https://www.cnblogs.com/peter-hao/p/AbstractFactory.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:MySQL 四种隔离级别
- 如何干掉 if else 策略+工厂 2020-06-11
- 设计模式-委派/策略模式 2020-06-09
- 深入理解:设计模式中的七大设计原则 2020-06-07
- 设计模式---类之间的关系知多少 2020-06-07
- 你与面试官所了解的单例模式并不一样! 2020-06-06
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash