深入理解设计模式---系列目录

一、创建型模式

  1. 深入理解设计模式(一):单例模式(Singleton pattern): 确保一个类只有一个实例, 并提供全局访问点.
  2. 深入理解设计模式(二):简单工厂模式(factory method pattern): 实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。
  3. 深入理解设计模式(四):工厂方法模式(factory method pattern): 定义了一个创建对象的接口, 但由子类决定要实例化的类是哪一个. 工厂方法让类把实例化推迟到子类
  4. 深入理解设计模式(五):抽象工厂模式(Abstract factory pattern): 提供一个接口, 用于创建相关或依赖对象的家族, 而不需要指定具体类.
  5. 深入理解设计模式(六):原型模式(prototype pattern): 当创建给定类的实例过程很昂贵或很复杂时, 就使用原形模式.
  6. 深入理解设计模式(七):建造者模式(Builder pattern): 使用生成器模式封装一个产品的构造过程, 并允许按步骤构造. 将一个复杂对象的构建与它的表示分离, 使得同样的构建过程可以创建不同的表示

二、行为型模式

  1. 深入理解设计模式(三):策略模式(strategy pattern) : 定义了算法族, 分别封闭起来, 让它们之间可以互相替换, 此模式让算法的变化独立于使用算法的客户.
  2. 深入理解设计模式(八):观察者模式(observer pattern) : 在对象之间定义一对多的依赖, 这样一来, 当一个对象改变状态, 依赖它的对象都会收到通知, 并自动更新.
  3. 深入理解设计模式(九):模板方法模式(Template pattern) : 在一个方法中定义一个算法的骨架, 而将一些步骤延迟到子类中. 模板方法使得子类可以在不改变算法结构的情况下, 重新定义算法中的某些步骤
  4. 深入理解设计模式(十):命令模式(Command pattern): 将"请求"封闭成对象, 以便使用不同的请求,队列或者日志来参数化其他对象. 命令模式也支持可撤销的操作.
  5. 深入理解设计模式(11):状态模式(State pattern) : 允许对象在内部状态改变时改变它的行为, 对象看起来好象改了它的类
  6. 深入理解设计模式(12):责任链模式(Chain of responsibility pattern): 通过责任链模式, 你可以为某个请求创建一个对象链. 每个对象依序检查此请求并对其进行处理或者将它传给链中的下一个对象.
  7. 深入理解设计模式(13):解释器模式(Interpreter pattern): 使用解释器模式为语言创建解释器.
  8. 深入理解设计模式(14):中介者模式(Mediator pattern) : 使用中介者模式来集中相关对象之间复杂的沟通和控制方式.
  9. 深入理解设计模式(15):访问者模式(visitor pattern) : 当你想要为一个对象的组合增加新的能力, 且封装并不重要时, 就使用访问者模式.
  10. 深入理解设计模式(16):备忘录模式(Memento pattern): 当你需要让对象返回之前的状态时(例如, 你的用户请求"撤销"), 你使用备忘录模式.
  11. 深入理解设计模式(17):迭代器模式(iterator pattern): 提供一种方法顺序访问一个聚合对象中的各个元素, 而又不暴露其内部的表示

三、结构型模式

  1. 深入理解设计模式(18):适配器模式(Adapter pattern) : 将一个类的接口, 转换成客户期望的另一个接口. 适配器让原本接口不兼容的类可以合作无间. 对象适配器使用组合, 类适配器使用多重继承.
  2. 深入理解设计模式(19):装饰者模式(decorator pattern) : 动态地将责任附加到对象上, 若要扩展功能, 装饰者提供了比继承更有弹性的替代方案.
  3. 深入理解设计模式(20):桥接模式(Bridge pattern) : 使用桥接模式通过将实现和抽象放在两个不同的类层次中而使它们可以独立改变.
  4. 深入理解设计模式(21):组合模式(composite pattern) : 允许你将对象组合成树形结构来表现"整体/部分"层次结构. 组合能让客户以一致的方式处理个别对象以及对象组合.
  5. 深入理解设计模式(22):享元模式(Flyweight Pattern): 如想让某个类的一个实例能用来提供许多"虚拟实例", 就使用蝇量模式.
  6. 深入理解设计模式(23):代理模式(Proxy pattern): 为另一个对象提供一个替身或占位符以控制对这个对象的访问.
  7. 深入理解设计模式(24):外观模式(facade pattern) : 提供了一个统一的接口, 用来访问子系统中的一群接口. 外观定义了一个高层接口, 让子系统更容易使用.

四、七大设计原则

  深入理解设计模式(序):常用的7大设计原则

  • 单一职责原则(single responsibility principle,SPR):一个类负责一项职责。
  • 开闭原则(Open-Close Principe,OCP):一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。
  • 里氏替换原则(Liskov Substitution Principe,LSP):一个软件实体如果使用的是一个父类的话,那么一定适用于其他子类,二且他察觉不出父类对象和子类对象的区别。
  • 依赖倒置原则(Dependence Inversion Principle):高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。即针对接口编程,不要针对实现编程。
  • 接口隔离原则(Interface  Segregation Principle, ISP:建立单一接口,不要建立庞大臃肿的接口,尽量细化接口,接口中的方法尽量少。
  • 迪米特法则(Law of Demeter,LoD):最少知识原则,清掉了类之间的松耦合,降低了系统的耦合度。
  • 组合/聚合复用原则(Composite Reuse Principe,CRP):尽量使用组合和聚合少使用继承的关系来达到复用的原则

五、总结

  深入理解设计模式(终):总结

原文地址:https://www.cnblogs.com/xuwendong/p/10078571.html

时间: 2024-11-08 20:31:04

深入理解设计模式---系列目录的相关文章

大话设计模式系列目录

图:23种设计模式概览 大话设计模式1:初识设计模式及设计模式五大基本原则

深入理解设计模式(终):总结--设计模式是药,没病就不要吃药

系列链接地址: 深入理解设计模式---系列目录 一.产品汪的神助攻,代码狗的安慰剂 定义:设计模式,指的是一个场景(context)下的一种解决方法(Solution),只要大家都认可某种模式,那么就只需要很短的一个名字,就可以代替很多很多的语言和文字交流,如果你觉得设计模式降低生产效率,那只能说你在这一行还要继续修炼. 宗旨:保证系统的低耦合高内聚,指导它们的原则无非就是封装变化,责任单一,面向接口编程等设计原则 目的:就是为了让代码变得更容易理解和维护 精髓:将复杂的逻辑抽离出来,让开发人员

深入理解JavaScript系列(25):设计模式之单例模式

介绍 从本章开始,我们会逐步介绍在JavaScript里使用的各种设计模式实现,在这里我不会过多地介绍模式本身的理论,而只会关注实现.OK,正式开始. 在传统开发工程师眼里,单例就是保证一个类只有一个实例,实现的方法一般是先判断实例存在与否,如果存在直接返回,如果不存在就创建了再返回,这就确保了一个类只有一个实例对象.在JavaScript里,单例作为一个命名空间提供者,从全局命名空间里提供一个唯一的访问点来访问该对象. 正文 在JavaScript里,实现单例的方式有很多种,其中最简单的一个方

深入理解JavaScript系列(31):设计模式之代理模式

介绍 代理,顾名思义就是帮助别人做事,GoF对代理模式的定义如下: 代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问. 代理模式使得代理对象控制具体对象的引用.代理几乎可以是任何对象:文件,资源,内存中的对象,或者是一些难以复制的东西. 正文 我们来举一个简单的例子,假如dudu要送酸奶小妹玫瑰花,却不知道她的联系方式或者不好意思,想委托大叔去送这些玫瑰,那大叔就是个代理(其实挺好的,可以扣几朵给媳妇),那我们如何来做呢? // 先声明美女对象 var girl = func

深入理解JavaScript系列(36):设计模式之中介者模式

介绍 中介者模式(Mediator),用一个中介对象来封装一系列的对象交互.中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互. 主要内容来自:http://www.addyosmani.com/resources/essentialjsdesignpatterns/book/#mediatorpatternjavascript 正文 软件开发中,中介者是一个行为设计模式,通过提供一个统一的接口让系统的不同部分进行通信.一般,如果系统有很多子模块需要直接沟通,

深入理解JavaScript系列(30):设计模式之外观模式

介绍 外观模式(Facade)为子系统中的一组接口提供了一个一致的界面,此模块定义了一个高层接口,这个接口值得这一子系统更加容易使用. 正文 外观模式不仅简化类中的接口,而且对接口与调用者也进行了解耦.外观模式经常被认为开发者必备,它可以将一些复杂操作封装起来,并创建一个简单的接口用于调用. 外观模式经常被用于JavaScript类库里,通过它封装一些接口用于兼容多浏览器,外观模式可以让我们间接调用子系统,从而避免因直接访问子系统而产生不必要的错误. 外观模式的优势是易于使用,而且本身也比较轻量

深入理解JavaScript系列(38):设计模式之职责链模式

介绍 职责链模式(Chain of responsibility)是使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系.将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止. 也就是说,请求以后,从第一个对象开始,链中收到请求的对象要么亲自处理它,要么转发给链中的下一个候选者.提交请求的对象并不明确知道哪一个对象将会处理它——也就是该请求有一个隐式的接受者(implicit receiver).根据运行时刻,任一候选者都可以响应相应的请求,候选者的数目是任意

深入理解JavaScript系列(33):设计模式之策略模式(转)

介绍 策略模式定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化不会影响到使用算法的客户. 正文 在理解策略模式之前,我们先来一个例子,一般情况下,如果我们要做数据合法性验证,很多时候都是按照swith语句来判断,但是这就带来几个问题,首先如果增加需求的话,我们还要再次修改这段代码以增加逻辑,而且在进行单元测试的时候也会越来越复杂,代码如下: validator = { validate: function (value, type) { switch (type) { c

深入理解JavaScript系列(43):设计模式之状态模式

介绍 状态模式(State)允许一个对象在其内部状态改变的时候改变它的行为,对象看起来似乎修改了它的类. 正文 举个例子,就比如我们平时在下载东西,通常就会有好几个状态,比如准备状态(ReadyState).下载状态(DownloadingState).暂停状态(DownloadPausedState).下载完毕状态(DownloadedState).失败状态(DownloadFailedState),也就是说在每个状态都只可以做当前状态才可以做的事情,而不能做其它状态能做的事儿. 由于Stat