创建类模式包括工厂方法模式、建造者模式、抽象工厂模式、单例模式和原型模式。

其中单例模式要保持在内存中只有一个对象,原型模式是要求通过复制的方式产生一个新的对象。

【工厂方法(抽象工厂) VS 建造者模式】

共产方法模式关注的是一个产品整体,但在建造者模式中,一个具体产品的产生是依赖各个部件的产生以及装配顺序,它关注的是“由零件一步一步地组装出产品对象”。

-------------------------------------------------------

结构类模式包括适配器模式、桥梁模式、组合模式、装饰模式、门面(外观)模式、享元模式和代理模式。

因为它们都是通过组合类或对象产生更大结构以适应更高层次的逻辑需求。

【代理模式 VS 装饰模式】

代理模式是把当前的行为或功能委托给其他对象执行,代理类负责接口限定:是否可以调用真实角色,以及是否对发送到真实角色的消息进行变形处理,它不对被主题角色(也就是代理类)的功能做任何处理,保证原汁原味的调用。

装饰模式是在保证接口不变的情况下加强类的功能,它保证的是被修饰的对象功能比原始对象丰富(当然,也可以减弱),但不做准入条件判断和准入参数过滤,如是否可以执行类的功能,过滤输入参数是否合规等,这不是装饰模式关心的。

【装饰模式 VS 适配器模式】

装饰模式的意图是加强对象的功能,适配器模式关注的则是转化,它的主要意图是两个不同对象之间的转化。

-------------------------------------------------------

行为类模式包括责任链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式,策略模式、模板方法模式、访问者模式。

【命令模式 VS 策略模式】

命令模式多了一个接受者角色

策略模式的意图是封装算法,它认为算法已经是一个完整的、不可拆分的原子业务,即其意图是让这些算法独立,并且可以相互替换,让行为的变化独立于拥有行为的客户

命令模式则是对动作的解耦,把一个动作的执行分为执行对象(接受者角色)、执行行为(命令角色),让两者相互独立而不相互影响

【策略模式 VS 状态模式】

两者都有一个叫做Context环境角色的类

策略模式封装的是不同的算法,算法之间没有交互,以达到算法可以自由切换的目的;算法必须是平行的

而状态模式封装的是不同的状态,以达到状态切换行为随之发生改变的目的;则要求有一系列状态发生变化的场景,它要求的是有状态且有行为的场景

-------------------------------------------------------

【门面模式 VS 中介模式】

门面模式只是增加了一个门面,它对子系统来说没有增加任何的功能,子系统若脱离门面模式是完全可以独立运行的

中介者模式则增加了业务功能,它把各个同事类中的原有耦合关系移植到了中介者,同事类不可能脱离中介者而独立存在,除非是想增加系统的复杂性和降低扩展性

-------------------------------------------------------

包装模式包括装饰模式、门面模式、代理模式、桥梁模式。包装模式是不干活的,只充当转发功能。

代理模式主要用在不希望展示一个对象内部细节的场景中,比如一个远程服务不需要把远程连接的所有细节都暴露给外部模块,通过增加一个代理类,可以很轻松地实现被代理类的功能封装。此外,代理模式还可以用在一个对象的访问需要限制的场景中,比如AOP。

装饰模式是一种特殊的代理模式,它倡导的是在不改变接口的前提下为对象增强功能,或者动态添加额外职责。就扩展性而言,它比子类更加灵活,例如在一个已经运行的项目中,可以很轻松地通过增加装饰类来扩展系统的功能。

适配器模式的主要意图是接口转换,把一个对象的接口转换成系统希望的另外一个接口,这里的系统指的不仅仅是一个应用,也可能是某个环境,比如通过接口转换可以屏蔽外界接口,以免外界接口深入系统内部,从而提高系统的稳定性和可靠性。

桥梁模式是在抽象层产生耦合,解决的是自行扩展的问题,它可以使两个有耦合关系的对象互不影响地扩展,比如对于使用笔画图这样的需求,可以采用桥梁模式设计成用什么笔(铅笔、毛笔)画什么图(圆形、方形)的方案,至于以后需求的变更,如增加笔的类型,增加图形等,对该设计来说是小菜一碟。

门面模式是一个粗粒度的封装,它提供一个方便访问子系统的接口,不具有任何的业务逻辑,仅仅是一个访问复杂系统的快速通道,没有它,子系统照样运行,有了它,只是更方便访问而已

转载于:https://www.cnblogs.com/anni-qianqian/p/8445213.html

《设计模式之禅》--设计模式大PK相关推荐

  1. 设计模式之禅之结构类PK【装饰模式VS适配器模式】

    设计模式之禅PK之结构类 结构类设计模式 结构类模式: 适配器模式 桥梁模式 组合模式 装饰模式 门面模式 享元模式 代理模式 相同点:他们都是通过组合类或对象产生更大的结构以适应更高的层次的逻辑需求 ...

  2. 设计模式之禅《一》 大旗不挥,谁敢冲锋 ——6大设计原则

    设计模式之禅<一>大旗不挥,谁敢冲锋 --6大设计原则 <一> 六大原则 一:单一职责原则 1.单一职责原则最难划分的就是职责 2.有两个可以变化的原因放到了一个接口中,这就为 ...

  3. 《设计模式之禅》前言

    终于可以写前言了,这说明<设计模式之禅>已经基本完成,可以长嘘一口气了. 为什么写<设计模式之禅>      今年5月份,我在JavaEye上发了一个帖子,其中提到自己已经工作 ...

  4. 初读《设计模式之禅》

    读这本书的起因源于csdn学生大本营的一次活动<设计模式之禅>试读员招募,身为程序员兼之学生大本营的老师没有道理不踊跃参加了(参加时可没走任何后门),佛祖显灵,真的能有幸成为了试读员.从得 ...

  5. 《设计模式之禅》笔记

    本片基于<设计模式之禅>所总结的笔记.其中总结了面试一般的常见的问题,虽然只是单调的文字,但是精简了很多概念,本文比较适合有一定设计模式基础的人,当做一个复习的笔记随时可查看. 单例模式 ...

  6. 设计模式之禅学习总结

    设计模式之禅学习总结 单一职责原则 SRP 里式替换原则 LSP 依赖倒置原则 DIP 接口隔离原则 迪米特法则LoD 开闭原则: 单例模式 单例模式的通用类图如下图 单例模式的优点 单例模式的缺点 ...

  7. 设计模式之禅(第2版)

    网站 更多书籍点击进入>> CiCi岛 下载 电子版仅供预览及学习交流使用,下载后请24小时内删除,支持正版,喜欢的请购买正版书籍 电子书下载(皮皮云盘-点击"普通下载" ...

  8. 设计模式领域公认的3本经典著作之一《设计模式之禅》 [豆瓣评分 8.70]

    下载地址...... 关注公众号:程序员白楠楠,领取. 需要的朋友点我获取:设计模式之禅 图书简介...... 本书是设计模式领域公认的3本经典著作之一,"极具趣味,容易理解,但讲解又极为严 ...

  9. 设计模式之禅【六大设计原则】

    大旗不挥,谁敢冲锋--6大设计原则 单一职责原则 "你设计的类符合SRP原则吗?"--保准对方立马"萎缩"掉,而且还一脸崇拜的看着你,心想"老大确实英 ...

  10. 《设计模式之禅》目录

    前  言 第一部分   大旗不挥,谁敢冲锋-6大设计原则全新解读 第1章   单一职责原则    2 1.1   我是"牛"类,我可以担任多职吗    2 1.2   绝杀技,打破 ...

最新文章

  1. 谁说程序员只能new对象?凭本事追的女神
  2. apache 重定向tomcat端口_Tomcat
  3. 5、在secureCRT中vi显色
  4. linux ssh连接慢
  5. java虚拟机的俩种异常
  6. 用c语言产生大素数,C语言实现寻找大素数
  7. 版本控制工具SVN+Apache整合
  8. 浅拷贝+引用计数--写时拷贝---模拟实现string容器
  9. 程序员保持身心健康的八种方式
  10. 第一次使用Sourcetree成功上传gitee记录
  11. 怎样格式化电脑_硬盘数据销毁最安全的步骤是怎样的?有公司可以做吗
  12. 【Java】计算一组同学一门课程的平均成绩、最高成绩和最低成绩
  13. 大学生能从计算机游戏中受益,2017年12月英语四级作文范文:大学生玩游戏
  14. 自定义srv消息之ros
  15. mysql5.7.11源码安装_centos 7.0安装MySQL Community Server 5.7.11 源码编译安装
  16. Linux数据库迁移
  17. 超酷的13个CSS有趣学习网站
  18. java 麻将胡牌算法_麻将胡牌算法研究
  19. 基于 ijkplayer开发的Android直播软件
  20. 站点主机安全档案(转)

热门文章

  1. eclipse经常高占用_高可用系统的设计指南
  2. python sys模块详解_python中os和sys模块的区别与常用方法总结
  3. mRNA的亚细胞定位
  4. android aes256加密算法,Android中AES256加密的实现
  5. 计算机桌面程序经常打不开了,电脑开机后桌面软件打不开怎么办
  6. oracle into 循环,oracle游标中使用select into查询结果为NULL导致异常提前退出循环——菜鸟解决办法(^_^)...
  7. 文字虚线怎么去掉_PS十秒钟更改图片上的文字?没问题!这个小技巧你轻松get到手「16期」...
  8. 运动目标跟踪(十)--CSK跟踪
  9. 相机模型与标定(十二)--opencv圆形标志点检测算法
  10. 系统学习数字图像处理之形态学分析补充(灰度级处理)