设计模式
最近一直在看设计模式的相关书籍,希望能把学到的东西总结出来,牢固所学,分享知识,与网友一起进步
小丑_
别人的成功不是偶然的,而是不断努力的必然结果。
展开
-
23种设计模式之迭代器
目录 1.简介 2.形式 1.简介 迭代器模式已经是一种没落的模式了,基本不会单独写一个迭代器。但其应用相当广泛,俨然已成为一种基础工具,如Java提供的Iterator。它对外提供一种方法用于访问一个容器对象中的每个元素,同时不会暴露该对象内部的细节信息。主要是为了解决遍历这些容器中的元素。主要包括抽象迭代器,具体迭代器,抽象容器和具体容器。迭代器部分主要负责实现访问和遍历元素。而...原创 2018-11-26 23:04:42 · 171 阅读 · 0 评论 -
23种设计模式之适配器
目录 1.简介 2.形式 3.扩展 1.简介 将一个类的接口转换成客户端所期望的另一种接口,从而使两个由于接口不匹配无法一起工作的类可以一起工作。又称为变压器模式。它通常具有三个角色,目标角色,源角色,适配器角色,适配器角色作为适配器模式的核心角色,用于实现将原角色转换成目标角色。通常会在系统扩展的时候使用,解决接口不相容的问题,灵活性非常好。 2.形式 目标角色 publ...原创 2018-11-18 21:27:21 · 118 阅读 · 0 评论 -
23种设计模式之策略
目录 1.简介 2.优点 3.缺点 4.形式 1.简介 将每个算法都封装起来,并使他们之间可以互换。主要采用的使面向对象的继承和多态机制。 2.优点 由于都实现的是同一个接口,从而算法之间可以自由切换。具有良好的扩展性。 3.缺点 每一个策略都是一个类,复用的可能性很小,类数量增多。并且需要对外暴露所有的策略类,这违背了LKP。可通过工厂,代理等修正。 4.形式 抽象...原创 2018-11-13 23:39:51 · 208 阅读 · 0 评论 -
23种设计模式之装饰
目录 1.简介 2.优点 3.缺点 4.形式 1.简介 动态的给某些对象增加一些额外的职责,就增加功能来说,它比生成子类更加灵活。主要由四个部分组成:抽象组件,它是最核心的原始对象;具体组件,是抽象组件的实现类;抽象装饰,继承自抽象组件;具体装饰,对组件对象进行修饰(可扩展)。 2.优点 由于装饰类和被装饰类可独立发展,因而可以解耦。可看作是继承的扩展方案。并且由于是动态的增...原创 2018-11-12 21:53:39 · 214 阅读 · 0 评论 -
23种设计模式之责任链
目录 1.简介 2.优点 3.缺点 4.形式 1.简介 通过将这些对象连成一条链,并沿着这条链传递该请求,直到所有对象处理它为止。这样每个对象都会有机会处理请求,从而也就避免了请求的发送者和接收者之间的耦合关系。 2.优点 将请求和处理分开,两者解耦,提高系统的灵活性。 3.缺点 当链较长时,常常会引发两个问题。性能问题和调试问题,每个请求都从头遍历到尾,可想而知。 4...原创 2018-11-08 23:20:39 · 199 阅读 · 0 评论 -
23种设计模式之命令
目录 1.简介 2.优点 3.缺点 4.形式 5.扩展 1.简介 将一个请求封装成一个对象,从而可以使用不同的请求把客户端参数化,对于请求排队或者记录请求日志,可以提供撤销和恢复功能。其中大概会有以下几个角色,Receive,Command,Invoker。其中Reveiver可以有多个,每个Reveiver都有自己业务需要处理;Command为整个命令模式的核心,其中涉及到对...原创 2018-11-05 22:39:57 · 107 阅读 · 0 评论 -
23种设计模式之中介者
目录 1.简介 2.特点 3.形式 1.简介 中介者模式通过建立一个中介对象来封装一系列的对象交互,使得各对象之间不需要直接进行交互,从而达到解耦的作用,而且可以独立地改变他们之间的交互。 2.特点 减少类之间的依赖,把相互之间的依赖转化为依赖中介者,降低了类之间的耦合,但是这种类越多,关系就越复杂,中介者的逻辑也就越复杂。 3.形式 抽象中介者 public abstrac...原创 2018-11-04 22:52:19 · 120 阅读 · 0 评论 -
23种设计模式之代理
目录 1.简介 2.优点 3.形式 3.1 普通代理 3.2 强制代理 3.3 动态代理 1.简介 代理模式又叫作委托模式,为其他对象提供一种代理以控制对这个对象的访问。它分为静态代理和动态代理。静态代理种又有普通代理和强制代理。普通代理要求客户端只能访问代理角色,而不能访问真实角色,它适用于扩展性要求较高的场合。强制代理必须通过真实角色查找到代理角色,否则你不能访问。它在实...原创 2018-11-01 22:34:06 · 249 阅读 · 0 评论 -
23种设计模式之原型
目录 1.简介 2.优点 3.缺点 4.形式 1.简介 用原型实例指定创建对象的种类,并且通过拷贝这些这些原型创建新的对象。其核心在于clone方法,通过该方法可以进行对象的拷贝。且于final关键字冲突。 2.优点 由于clone方法是在内存二进制流的拷贝,相比直接new出来性能更高,尤其是需要在循环体内产生大量对象时非常适用。 3.缺点 由于是在内存中拷贝,所以构造函...原创 2018-11-02 21:29:17 · 179 阅读 · 0 评论 -
23种设计模式之建造者
目录 1.简介 2.优点 3.形式 4.扩展 5.区别 1.简介 建造者模式,又名生成器模式。将一个复杂对象的构建从其表示中分离,以便同样的构建过程可以创建不同的表示。它主要包含四个成员,产品类,抽象建造者,具体建造者和导演类。产品类主要通过模板模式实现,抽象建造者用于规范产品的组件,具体建造者实现抽象定义中的所有方法,负责现有模块实现顺序,以及返回对应的实例。 2.优点 具有良...原创 2018-10-31 21:55:10 · 194 阅读 · 0 评论 -
23种设计模式之模板
目录 1.简介 2.优点 3.缺点 4.形式 5.扩展 1.简介 定义一个操作中算法的框架,将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。它里面涉及到两类方法,一类是基本方法,一类是模板方法。基本方法主要是一些单个方法,模板方法是由基本方法组成,主要是为完成一些固定的逻辑。 2.优点 封装不变,扩展可变。将不变的部分封装到父类,子类...原创 2018-10-30 21:07:49 · 211 阅读 · 0 评论 -
23种设计模式之抽象工厂
目录 1.简介 2.优点 3.缺点 4.形式 1.简介 抽象工厂模式是为创建一组相关或相互依赖的对象提供的一个接口,并且无需指定具体的类。很明显,它是工厂模式的升级版。之前的工厂模式一个工厂就可以了,现在有种情况是工厂模式无法满足的,就是如果产品之间具有一种相互关系,就只能用抽象工厂模式了。 2.优点 同样是具有了很好的封装性,并且产品之间的相互关系将处于一种非公开的状态。 ...原创 2018-10-28 20:10:18 · 185 阅读 · 0 评论 -
23种设计模式之工厂
目录 1.简介 2.优点 3.形式 4.扩展 1.简介 定义一个用于创建对象的接口,让子类去决定到底哪个类需要实例化。通过工厂方法使得一个类的实例化从而延迟到子类。这样我们通过依赖抽象接口创建出具体的实例,避免变化所带来的影响,这也正符合DIP。 2.优点 具有良好的封装性和扩展性。 3.形式 抽象产品 public abstract class AProduct {...原创 2018-10-26 21:43:39 · 220 阅读 · 0 评论 -
23种设计模式之单例
目录 1.简介 2.优点 3.缺点 4.注意 5.形式 5.1 饿汉模式 5.2 懒汉模式 6.扩展 1.简介 单例模式(Singleton Pattern),为确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。其中的类称为单例类,通过将构造函数设置为private私有访问权限从而限制外部创建对象,也就确保了在一个应用中只产生一个实例,并且自行实例化。 2...原创 2018-10-24 23:55:04 · 246 阅读 · 0 评论