设计模式part2

1.     抽象工厂模式

工厂方法模式有一个问题就是,类的创建依赖工厂类,也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则,所以,从设计角度考虑,有一定的问题,如何解决?就用到抽象工厂模式,创建多个工厂类,这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。因为抽象工厂不太好理解,我们先看看图,然后就和代码,就比较容易理解

【java】Sender

publicinterface Sender {void send();}

【java】SmsSender

publicclass SmsSender implements Sender{@Overridepublicvoid send() {System.out.println("sms sender");}}

【java】MailSender

publicclass MailSender implements Sender{@Overridepublicvoid send() {System.out.println("mail sender");}}

【java】Provider

publicinterface Provider {Sender produce();}

【java】SmsSenderFactory

publicclass SmsSendFactory implements Provider{@Overridepublic Sender produce() {returnnewSmsSender();}}

【java】MailSenderFatory

publicclass MailSendFactory implements Provider{@Overridepublic Sender produce() {returnnew MailSender();}}

【java】MainTest

publicclass MainTest {publicstaticvoid main(String[] args) {Providerprovider = new SmsSendFactory();Sendersender = provider.produce();sender.send();}}

设计模式二、抽象工厂模式相关推荐

  1. 设计模式系列·抽象工厂模式

    前言 以小说的笔法写的设计模式系列文章,你绝对看得懂![首发于公众号:"聊聊代码"] 设计模式系列·王小二需求历险记(一) 设计模式系列·王小二需求历险记(二) 设计模式系列·封装 ...

  2. 设计模式三—抽象工厂模式

    设计模式三-抽象工厂模式 一.定义 抽象工厂模式是工厂方法模式的进一步抽象.如果产品簇中只有一种产品,则退化为工厂方法模式. 二.原理图 三.代码实例 * 苹果和土豆是园丁1的杰作 * 葡萄和西红柿是 ...

  3. C#设计模式(4)——抽象工厂模式

    C#设计模式(4)--抽象工厂模式 一.引言 在上一专题中介绍了工厂方法模式,工厂方法模式是为了克服简单工厂模式的缺点而设计出来的,简单工厂模式的工厂类随着产品类的增加需要增加额外的代码),而工厂方法 ...

  4. 设计模式之抽象工厂模式---abstract factory

    模式的介绍 模式的定义 Provide an interface for creating families of related or dependent objects without speci ...

  5. 乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern)

    原文:乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern) [索引页] [源码下载] 乐在其中设计模式(C#) - 抽象工厂模式(Abstract Facto ...

  6. 设计模式复习-抽象工厂模式

    设计模式复习-抽象工厂模式 有两种硬件,PC和Phone,有两种系统,Windows和Linux,现在假设PC和Phone上全都能安装这两个系统,并且将来硬件不会在变化,但是系统可能需要扩展,比如扩展 ...

  7. 设计模式之四(抽象工厂模式第三回合)

    原文:设计模式之四(抽象工厂模式第三回合) 前言 抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 抽象工厂模式最大的好处便是易于交换产品系列,由于具体工厂类,例如I ...

  8. python抽象工厂模式_Python设计模式之抽象工厂模式

    Python设计模式之抽象工厂模式 这篇文章主要为大家详细介绍了Python设计模式之抽象工厂模式,感兴趣的小伙伴们可以参考一下 python面向对象编程入门,我们需要不断学习进步 "&qu ...

  9. 设计模式-04抽象工厂模式

    设计模式-04抽象工厂模式 文章中涉及到的代码,请自行下载 https://gitee.com/pan_xiao_lei123/designmode.git 前面介绍的工厂方法模式中考虑的是一类产品的 ...

  10. Java 设计模式之抽象工厂模式

    抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂.该超级工厂又称为其他工厂的工厂.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 在抽 ...

最新文章

  1. Spring整合Struts2
  2. java语言for模板_java版的模板语言
  3. 恢复应用_ofo年底裁员超50%,苹果应用市场恢复畅销榜,支付宝15周年微电影发布,MIUI来电留言功能即将下线,这就是今天的其他大新闻!...
  4. 释疑の删除多余的ALV布局以及选择条件变式
  5. P3190-[HNOI2007]神奇游乐园【插头dp】
  6. hdu 4612 边连通度缩点+树的最长路径
  7. 【100题】第十八题(约瑟夫循环)
  8. Shell_Shell调用SQLPlus简介(案例)
  9. if __name__ == '__main__' 如何正确理解?
  10. 去阿里面试,被一道 Spring 面试题难倒了
  11. android 动态壁纸 例子,android 动态壁纸实例(1)【转】
  12. python实现根据excel内容批量生成二维码
  13. 港口信息化、智能化、自动化产品设计想法---5
  14. 索尼1a dac插电脑用什么驱动。在哪下载,求助
  15. 近代光学系统设计概论学习笔记-第四章双胶合和双分离消色差物镜
  16. Ubuntu安装Clang\Clang版本切换
  17. CAD中插入外部参照字体会变繁体_为什么CAD插入外部参照时有些文字消失了?
  18. 圣思园将于本周日(10月31日)举行Web Service开发大型免费公开课
  19. 【安规】电气间隙和爬电距离如何确定
  20. windows安装包删了会有影响吗_删除Windows更新安装包及更新记录

热门文章

  1. 图灵奖获得者罗杰·瑞迪:AI不可能取代人类
  2. 招股书“失效”,网筑集团首次冲刺上市折戟,业务极其依赖绿城中国
  3. C语言链栈(基本压栈,弹栈,取栈顶元素)
  4. 万字大章_标题、段落、链接、图像等_HTML入门必备基础
  5. lab2 基于VMware虚拟化的跨网段访问(使用海蜘蛛)
  6. 物品抠图怎么更换背景?快来get这个方法
  7. 连接向导中的拨号调制解调器或 PPPoE 选项不可用问题
  8. 谷歌中国搜索业务再遇挑战
  9. KMM 入门(三)平台差异化实现
  10. 小程序底部tabbar设置扫一扫功能