设计模式
专业遛狗师
这个作者很懒,什么都没留下…
展开
-
设计模式之面向对象设计的6个原则
1、开闭原则一个软件实体对扩展开放,对修改关闭,即在不修改源代码的情况下改变这个模块的行为方式:配置文件,DOM解析,反射2、里氏替换原则如果能够使用基类对象,那么一个能够使用子类对象,把基类都替换成子类,程序将不会产生任何错误和异常反之则不成立3、依赖倒转原则代码要依赖于抽象类,而不要依赖于具体的类,要针对接口或抽象类进行编程,而不是针对具体的类即,在程序代码中传递...原创 2019-03-31 15:35:03 · 76 阅读 · 0 评论 -
设计模式之适配器模式
参考https://www.cnblogs.com/V1haoge/p/6479118.html定义:将一个接口转换成用户希望的另一个接口,使两个不相容的接口可以一起工作包含角色:1.目标抽象类Target2.适配器类 Adapter3.适配者类 Adaptee分类:1.类适配器public class Adapter extends Adaptee implement...转载 2019-04-11 17:40:40 · 118 阅读 · 0 评论 -
设计模式之桥接模式
内容抄自《设计模式》清华大学出版社,2011模式定义:将抽象部分与它的实现部分分离,使它们都可以独立的变化比如: T-shirt 大中小号 红绿蓝颜色如果一一定义需要9的类,而桥接需要6个类结构分析:包含角色:1.Abstraction(抽象类->T-shirt)2.RefinedAbstraction(扩充抽象类->号码)实现了抽象类,可以调用Imple...原创 2019-04-11 18:01:16 · 117 阅读 · 0 评论 -
设计模式之组合模式
内容抄自《设计模式》清华大学出版社,2011模式定义:组合多个对象形成树形结构以表示“整体-部分”的层次结构结构分析:包含角色:1.Component(抽象构件) 定义统一方法2.Leaf(叶子构件)3.Composite(容器构件)优点:1.清楚地定义分层次的复杂对象,让客户忽略层次的差异 2.简化调用代码,用户针对抽象,无需关心细节 3.容易加入新构件缺点:...原创 2019-04-12 10:45:42 · 102 阅读 · 0 评论 -
设计模式之装饰器模式
内容抄自《设计模式》清华大学出版社,2011动机:替代继承定义:动态给一个对象增加一些额外的功能,比生成子类更灵活结构分析:包含角色:1.Component(抽象构件)2.ConcreteComponent(具体构件)3.Decorator(抽象装饰类)4.ConcreteDecorator(具体装饰类)模式分析: 核心在于抽象装饰类public clas...原创 2019-04-12 11:14:38 · 158 阅读 · 0 评论 -
设计模式之责任链模式
内容抄自《设计模式》清华大学出版社,2011模式动机:客户端无须关心请求的处理细节以及请求的传递,只需将请求发送到链上即可,将请求的发送者和处理者解耦模式定义:避免请求发送者和接收者耦合在一起,将这些对象连接成一条链,并沿着这条链传递请求,直到有对象处理它为止。结构分析:包含角色:1.Handler(抽象处理者)2.ConcreteHandler(具体处理者)模式...原创 2019-04-12 11:37:57 · 104 阅读 · 0 评论 -
设计模式之命令模式
内容抄自《设计模式》清华大学出版社,2011命令模式的动机与定义: 命令模式将请求的发送者和接收者解耦,在发送者与接收者之间引入命令对象,将发送者的请求封装在命令对象中,再通过命令对象来调用接收者的方法。命令模式的动机:命令模式可以对发送者和接收者完全解耦,发送者与接收者之间没有直接引用关系,发送请求的对象只需要知道如何发送请求,而不必知道如何完成请求,例如开关和电灯,开关是请求的...原创 2019-04-12 15:13:08 · 143 阅读 · 0 评论 -
设计模式之迭代器模式
内容抄自《设计模式》清华大学出版社,2011模式动机:对List或Set等集合中的元素进行遍历模式定义:提供一种方法来访问集合,而不用暴露这个集合对象的内部表示,其别名为游标(Cursor)。结构分析:包含角色:1.Aggregate 抽象集合类(内部可以用不同的数据结构存储元素)2.ConcreteAggregate 具体集合类3.Iterator 抽象迭代器...原创 2019-04-12 16:12:15 · 135 阅读 · 0 评论 -
设计模式之备忘录模式
内容抄自《设计模式》清华大学出版社,2011模式定义:在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。结构分析:包含角色:1.Originator(原发器) 创建备忘录2.Memento(备忘录)3.Caretaker(负责人) 保存备忘录模式分析:public class Origin{ ...原创 2019-04-12 16:35:02 · 130 阅读 · 0 评论 -
设计模式之状态模式
内容抄自《设计模式》清华大学出版社,2011模式动机: 在软件系统中大量存在状态,如考虑某酒店订房系统,可以将酒店房间设计为一个类,酒店房间对象将会存在已预订,空闲、已入住等状态,这些状态之间可以相互转换,对于客户而言,这些状态的转换细节无须知道。模式定义: 允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。结构分析:包含角色:1.Contex...原创 2019-04-12 16:52:52 · 360 阅读 · 0 评论 -
设计模式之单例模式
优点: 1.无须频繁创建实例,节约系统资源,提高系统性能 2.严格控制实例的访问 缺点: 1.扩展困难,需要修改源代码 2.违背单一职责原则,既是工厂角色又是产品角色 3.由于jvm自动回收机制,实例长时间不使用会被回收,使用又实例化,导致对象状态的丢失 适用环境:1.系统只需要一个实例对象 2.需要严格控制访问入口 扩...原创 2019-04-12 15:41:52 · 80 阅读 · 0 评论 -
设计模式之原型模式
内容抄自《设计模式》清华大学出版社,2011模式动机:在软件系统中,有些对象的创建过程较为复杂,而且有的时候需要频繁创建,原型模式可以通过复制的方法,减少创建对象花费的时间。模式定义:用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。角色:1.抽象原型类 (需定义有克隆接口) 一般用Object.class2.具体原型类 需实现(Cloneable:浅克隆,深克...原创 2019-04-11 17:16:12 · 108 阅读 · 0 评论 -
设计模式之建造者模式
内容抄自《设计模式》清华大学出版社,2011模式动机:无论是在现实世界还是软件系统中,都存在一些复杂的对象,它们拥有对个组成部分,如汽车,包含发动机,方向盘,轮胎等等,对于大多数用户而言无须知道这些部件的装配细节,也几乎不会单独使用某个部件,而是使用一辆完整的汽车,此时,就可以通过建造者模式对其进行设计与描述,建造者模式可以将部件和其组装过程分开,一步步创建一个复杂的对象。模式定义:...原创 2019-04-11 16:47:56 · 126 阅读 · 0 评论 -
设计模式之访问者模式
内容抄自《设计模式》清华大学出版社,2011模式动机: 在java等很多面向对象的语言中,都提供了集合类,一般在集合中的元素是相同类型的,所以对该集合的操作也是相同的,但是有的时候在集合中的只是父类型,这时候就要针对具体的类型进行不同的操作,这样就会产生很多逻辑条件语句,增加语句的复杂度。在实际使用时,对同一个集合对象的操作并不是唯一的,对相同元素可能存在多种不同的操作方式,,而访...原创 2019-04-01 11:20:19 · 121 阅读 · 0 评论 -
设计模式之享元模式
内容抄自《设计模式》清华大学出版社,2011模式动机: 在一个软件中很有可能要使用大量相同或相似的对象,而创建这些相似的对象会大量消耗系统资源,类似围棋,在围棋中,需要创建大量的棋子,而这些棋子只是颜色与位置不同,这个时候就可以用享元模式来解决这个问题。模式定义:运用共享技术有效地支持大量细粒度对象的复用,系统只使用少量的对象,而这些对象都很相似,状态变化很小,可以实现对象的...原创 2019-04-01 12:07:31 · 104 阅读 · 0 评论 -
设计模式之模板方法模式
内容抄自《设计模式》清华大学出版社,2011模式动机: 在现实生活中很多事情的完成过程都包含几个基本步骤,例如请客吃饭,无论吃什么,一般都包含点单,吃东西,买单几个步骤,到底吃什么则具体情况具体分析,在实际环境中再由用户动态决定,模式定义: 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重定义改算法的某些特定步骤。结构分析:...原创 2019-04-01 13:36:22 · 126 阅读 · 0 评论 -
设计模式之代理模式
内容抄自《设计模式》清华大学出版社,2011模式动机: 通过引入一个新的对象(如小图片和远程代理对象),来实现对真实对象的操作。模式定义:给某一个对象提供一个代理,并由代理对象控制对原对象的引用。结构分析:包含角色:1.Target(目标类)2.TargetImpl(目标实现类)3.Proxy(代理类)模式分析:public class Proxy imp...原创 2019-04-01 13:52:21 · 96 阅读 · 0 评论 -
设计模式之策略模式
内容抄自《设计模式》清华大学出版社,2011模式动机: 在很多情况下,实现某个目标的途径不止一条,例如人们外出旅游时可以选择多种不同的出行方式。模式定义: 定义一系列的算法,将每一个算法封装起来,并让它们可以相互替换。结构分析:包含角色:1.Context(环境类)2.Strategy(抽象策略类)3.ConcreteStrategy(具体策略类)模式分析:...原创 2019-04-01 14:09:19 · 116 阅读 · 0 评论 -
设计模式之简单工厂
内容抄自《设计模式》清华大学出版社,2011模式动机:在实际的软件开发过程中,有时需要创建一些来自于相同父类的类的实例,为此可以专门定义一个类来负责创建这些类的实例,这些被创建的实例具有共同的父类,在这种情况下,可以通过传入不同的参数从而获得不同的对象。模式分析:包含角色:1、Factory工厂类 (核心)2、Product抽象产品 (TV)3、ConcreteProdu...原创 2019-04-11 11:13:32 · 138 阅读 · 0 评论 -
设计模式之工厂方法模式
内容抄自《设计模式》清华大学出版社,2011模式动机:为了解决简单工厂导致的工厂类不符合开闭原则的问题模式定义:在工厂模式方法中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成。模式结构分析:包含角色:1、Factory抽象工厂类 (核心)2、ConcreteFactory具体工厂类...原创 2019-04-11 11:18:42 · 114 阅读 · 0 评论 -
设计模式之抽象工厂
内容抄自《设计模式》清华大学出版社,2011模式动机:在工厂方法模式中具体工厂负责生产具体的产品,每一个具体工厂对应一种具体产品,但是有时候我们需要一个工厂可以提供多个产品对象,比如一个一个电器设备工厂,可以生产电视,空调,冰箱等设备,而不只是生成某种类型的电器。模式定义:提供一个创建一系列相关或相互依赖对象的接口,而无须知道它们具体的类。模式分析:包含角色:1. Abs...原创 2019-04-11 13:48:55 · 104 阅读 · 0 评论 -
设计模式之外观模式
内容抄自《设计模式》清华大学出版社,2011模式动机: 在大多数情况下,无论一个网站的大小,都会提供一个网站首页,网站首页一般作为整个网站的入口,它提供了通往各个子栏目的超链接,对应用户而言只需要记住网站首页的网址,而无须记住每一个子栏目的网址。模式定义:外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面结构分析:包含角色:1.F...原创 2019-04-02 15:48:30 · 90 阅读 · 0 评论 -
设计模式之观察者模式
内容抄自《设计模式》清华大学出版社,2011模式动机:无论是在现实世界中还是在软件系统中,人们常常会遇到这样一类问题,一个对象的状态改变会引发其他对象的状态改变,如十字路口的交通信号灯,红灯亮则汽车停,绿灯亮则汽车行,这些对象之间存在一种依赖关系,一个对象的行为会导致依赖它的其他对象发生反应。模式定义:定义对象间的一种一对多的依赖关系,使得每当一个对象的状态发生改变时,其相关依赖对...原创 2019-04-12 17:24:29 · 182 阅读 · 0 评论