设计模式
小丑_
别人的成功不是偶然的,而是不断努力的必然结果。
展开
-
六大设计原则之DIP
目录1.简介2.定义3.依赖3.1 构造函数传递依赖对象3.2 Setter方法传递依赖对象3.3 接口声明依赖对象4.举例1.简介依赖倒置原则(Dependence Inversion Principle),简称DIP。2.定义高层模块不应该依赖于低层模块,两者都应该依赖其抽象。抽象不应该依赖细节。细节应该依赖抽象。这里的低层模块就是不可分割的原子逻辑...原创 2018-10-14 10:11:23 · 1900 阅读 · 0 评论 -
23种设计模式之代理
目录 1.简介2.优点3.形式3.1 普通代理3.2 强制代理3.3 动态代理1.简介代理模式又叫作委托模式,为其他对象提供一种代理以控制对这个对象的访问。它分为静态代理和动态代理。静态代理种又有普通代理和强制代理。普通代理要求客户端只能访问代理角色,而不能访问真实角色,它适用于扩展性要求较高的场合。强制代理必须通过真实角色查找到代理角色,否则你不能访问。它在实...原创 2018-11-01 22:34:06 · 244 阅读 · 0 评论 -
23种设计模式之原型
目录 1.简介2.优点3.缺点4.形式1.简介用原型实例指定创建对象的种类,并且通过拷贝这些这些原型创建新的对象。其核心在于clone方法,通过该方法可以进行对象的拷贝。且于final关键字冲突。2.优点由于clone方法是在内存二进制流的拷贝,相比直接new出来性能更高,尤其是需要在循环体内产生大量对象时非常适用。3.缺点由于是在内存中拷贝,所以构造函...原创 2018-11-02 21:29:17 · 177 阅读 · 0 评论 -
23种设计模式之中介者
目录1.简介2.特点3.形式1.简介中介者模式通过建立一个中介对象来封装一系列的对象交互,使得各对象之间不需要直接进行交互,从而达到解耦的作用,而且可以独立地改变他们之间的交互。2.特点减少类之间的依赖,把相互之间的依赖转化为依赖中介者,降低了类之间的耦合,但是这种类越多,关系就越复杂,中介者的逻辑也就越复杂。3.形式抽象中介者public abstrac...原创 2018-11-04 22:52:19 · 114 阅读 · 0 评论 -
23种设计模式之装饰
目录 1.简介2.优点3.缺点4.形式1.简介动态的给某些对象增加一些额外的职责,就增加功能来说,它比生成子类更加灵活。主要由四个部分组成:抽象组件,它是最核心的原始对象;具体组件,是抽象组件的实现类;抽象装饰,继承自抽象组件;具体装饰,对组件对象进行修饰(可扩展)。2.优点由于装饰类和被装饰类可独立发展,因而可以解耦。可看作是继承的扩展方案。并且由于是动态的增...原创 2018-11-12 21:53:39 · 209 阅读 · 0 评论 -
23种设计模式之命令
目录 1.简介2.优点3.缺点4.形式5.扩展1.简介将一个请求封装成一个对象,从而可以使用不同的请求把客户端参数化,对于请求排队或者记录请求日志,可以提供撤销和恢复功能。其中大概会有以下几个角色,Receive,Command,Invoker。其中Reveiver可以有多个,每个Reveiver都有自己业务需要处理;Command为整个命令模式的核心,其中涉及到对...原创 2018-11-05 22:39:57 · 103 阅读 · 0 评论 -
23种设计模式之策略
目录 1.简介2.优点3.缺点4.形式1.简介将每个算法都封装起来,并使他们之间可以互换。主要采用的使面向对象的继承和多态机制。2.优点由于都实现的是同一个接口,从而算法之间可以自由切换。具有良好的扩展性。3.缺点每一个策略都是一个类,复用的可能性很小,类数量增多。并且需要对外暴露所有的策略类,这违背了LKP。可通过工厂,代理等修正。4.形式抽象...原创 2018-11-13 23:39:51 · 201 阅读 · 0 评论 -
23种设计模式之责任链
目录 1.简介2.优点3.缺点4.形式1.简介通过将这些对象连成一条链,并沿着这条链传递该请求,直到所有对象处理它为止。这样每个对象都会有机会处理请求,从而也就避免了请求的发送者和接收者之间的耦合关系。2.优点将请求和处理分开,两者解耦,提高系统的灵活性。3.缺点当链较长时,常常会引发两个问题。性能问题和调试问题,每个请求都从头遍历到尾,可想而知。4...原创 2018-11-08 23:20:39 · 197 阅读 · 0 评论 -
23种设计模式之适配器
目录 1.简介2.形式3.扩展1.简介将一个类的接口转换成客户端所期望的另一种接口,从而使两个由于接口不匹配无法一起工作的类可以一起工作。又称为变压器模式。它通常具有三个角色,目标角色,源角色,适配器角色,适配器角色作为适配器模式的核心角色,用于实现将原角色转换成目标角色。通常会在系统扩展的时候使用,解决接口不相容的问题,灵活性非常好。2.形式目标角色publ...原创 2018-11-18 21:27:21 · 116 阅读 · 0 评论 -
23种设计模式之模板
目录 1.简介2.优点3.缺点4.形式5.扩展1.简介定义一个操作中算法的框架,将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。它里面涉及到两类方法,一类是基本方法,一类是模板方法。基本方法主要是一些单个方法,模板方法是由基本方法组成,主要是为完成一些固定的逻辑。2.优点封装不变,扩展可变。将不变的部分封装到父类,子类...原创 2018-10-30 21:07:49 · 204 阅读 · 0 评论 -
23种设计模式之单例
目录 1.简介2.优点3.缺点4.注意5.形式5.1 饿汉模式5.2 懒汉模式6.扩展1.简介单例模式(Singleton Pattern),为确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。其中的类称为单例类,通过将构造函数设置为private私有访问权限从而限制外部创建对象,也就确保了在一个应用中只产生一个实例,并且自行实例化。2...原创 2018-10-24 23:55:04 · 245 阅读 · 0 评论 -
23种设计模式之建造者
目录1.简介2.优点3.形式4.扩展5.区别1.简介建造者模式,又名生成器模式。将一个复杂对象的构建从其表示中分离,以便同样的构建过程可以创建不同的表示。它主要包含四个成员,产品类,抽象建造者,具体建造者和导演类。产品类主要通过模板模式实现,抽象建造者用于规范产品的组件,具体建造者实现抽象定义中的所有方法,负责现有模块实现顺序,以及返回对应的实例。2.优点具有良...原创 2018-10-31 21:55:10 · 193 阅读 · 0 评论 -
六大设计原则之ISP
目录 1.简介2.定义3.举例1.简介接口隔离原则(Interface Segregation Principle),简称ISP。2.定义类间的依赖关系应该建立在最小的接口上。意思是说在保证SRP的基础上,尽可能的细化接口,做到高类聚。何为高类聚,高类聚是指提高接口的处理能力,减少对外的交互,提供较少的公共方法。一旦违背了ISP就会出现封装过度的情况,而这是不被允许...原创 2018-10-14 22:15:21 · 1334 阅读 · 0 评论 -
六大设计原则之LKP
目录 1.简介2.定义3.举例1.简介最少知识原则(Least Knowledge Priciple),简称LKP。2.定义一个对象应该对其他对象有最少的了解。也就是说一个类应该对自己需要耦合或者调用的类知道最少,即提供较少的public方法,至少内部是如何复杂就不是该考虑的了。它还表现为只和最近的对象沟通,最近的对象指的就是出现在成员变量,方法输入输出参数中的类。...原创 2018-10-15 22:25:50 · 2963 阅读 · 1 评论 -
六大设计原则之SRP
简介:单一职责原则(Single Responsibility Principle),简称SRP。定义:有且仅有一个原因引起接口或类的变更。举例:电话通话的过程将会伴随四个过程---拨号,通话,挂机。对应的电话模拟过程如下public interface Iphone{ //拨通电话 public void dial(String phoneNumber); ...原创 2018-10-09 22:38:19 · 4275 阅读 · 0 评论 -
六大设计原则之LSP
简介:里氏替换原则(Liskov Substitution Principle),简称LSP。定义:如果对每一个类型为S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有的对象o1都代换成o2时,程序P的行为没有发生变化,那么类型S是类型T的子类型。定义:所有引用基类的地方必须能透明地使用其子类的对象。总结:父类替换成子类而不会产生任何错误或异常,反之,不一定成立。...原创 2018-10-10 23:37:57 · 1808 阅读 · 0 评论 -
23种设计模式之抽象工厂
目录 1.简介2.优点3.缺点4.形式1.简介抽象工厂模式是为创建一组相关或相互依赖的对象提供的一个接口,并且无需指定具体的类。很明显,它是工厂模式的升级版。之前的工厂模式一个工厂就可以了,现在有种情况是工厂模式无法满足的,就是如果产品之间具有一种相互关系,就只能用抽象工厂模式了。2.优点同样是具有了很好的封装性,并且产品之间的相互关系将处于一种非公开的状态。...原创 2018-10-28 20:10:18 · 183 阅读 · 0 评论 -
六大设计原则之OCP
目录 简介 定义举例简介 开闭原则(Open Closed Principle),简称OCP。定义软件实体应该对扩展开放,对修改关闭。何为软件实体?主要包括项目或软件产品按照一定的逻辑规则划分的模块,抽象,类,方法。实质是通过扩展来实现变化。举例一年一度的11又要来了,鸡冻哇。要是平时物品是正常售出,就像这样public interface IGood...原创 2018-10-21 23:09:25 · 3135 阅读 · 0 评论 -
23种设计模式之工厂
目录 1.简介2.优点3.形式4.扩展1.简介定义一个用于创建对象的接口,让子类去决定到底哪个类需要实例化。通过工厂方法使得一个类的实例化从而延迟到子类。这样我们通过依赖抽象接口创建出具体的实例,避免变化所带来的影响,这也正符合DIP。2.优点具有良好的封装性和扩展性。3.形式抽象产品public abstract class AProduct {...原创 2018-10-26 21:43:39 · 217 阅读 · 0 评论 -
23种设计模式之迭代器
目录 1.简介2.形式1.简介迭代器模式已经是一种没落的模式了,基本不会单独写一个迭代器。但其应用相当广泛,俨然已成为一种基础工具,如Java提供的Iterator。它对外提供一种方法用于访问一个容器对象中的每个元素,同时不会暴露该对象内部的细节信息。主要是为了解决遍历这些容器中的元素。主要包括抽象迭代器,具体迭代器,抽象容器和具体容器。迭代器部分主要负责实现访问和遍历元素。而...原创 2018-11-26 23:04:42 · 168 阅读 · 0 评论