23种设计模式
文章平均质量分 59
面向对象中常用的23种设计模式,每种的具体使用价值和使用方法,以及设计模式遵循的一些常用原则。
点滴寸土
这个作者很懒,什么都没留下…
展开
-
设计模式系列--23种常见设计模式之适配器模式(14)
适配器模式顾名思义,进行适配,常见的电源适配器就是一个典型的适配过程。对于开发来说,就是将一个类的接口转换成另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作比如我们以前开发的EDI系统,其特性之一就是满足了AB客户间的通信,适配了AB客户不同的数据请求,已实现能正常交互,也是一种中间件的思想。由EDI直接对接AB,而不需要AB直接对接。还有常用的数据库驱动,spring工程中根据不同的配置,使用不同的驱动程序客户A:package cn.pers.sample..原创 2021-02-08 10:31:49 · 364 阅读 · 0 评论 -
设计模式系列--23种常见设计模式之建造者模式(13)
建造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一种对象创建型模式。一般会定义一个公共的抽象建造者,定义了具体需要建造哪些部分;设置具体的执行者,构建建造过程,顺序等;定义抽象的公共出的产品对象,提取通用的属性。实现过程:按需获取或创建对应的具体建造器,执行者执行构造过程,获取生产的结果。如下:定义一个建造者:package cn.pers.sample.build;/** * 定义的原创 2021-01-28 17:50:21 · 258 阅读 · 0 评论 -
设计模式系列--23种常见设计模式之原型模式(12)
原型模式用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象,让创建的新对象保持和原有对象相同的内容原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需要指定任何创建的细节,就像克隆。比如如下代码实例:公共代码Address类:package cn.pers.sample.prototype;import lombok.Getter;import lombok.Setter;import java.io.Serializable;/** * @aut原创 2020-12-08 14:03:54 · 113 阅读 · 0 评论 -
设计模式系列--23种常见设计模式之单例模式(11)
单例模式保证一个类仅有一个实例,并提供一个访问它的全局访问点。Java中单例模式定义:“一个类有且仅有一个实例,并且自行实例化向整个系统提供。”所有类都有构造方法,不编码则系统默认生成空的构造方法,若有显示定义的构造方法,默认的构造方法就会失效。分析:1、通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象;一个最好的办法就是,让类自身负责保存它的唯一实例;这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法。2、单例模式因为封装了它的唯一原创 2020-11-19 20:23:47 · 150 阅读 · 0 评论 -
设计模式系列--23种常见设计模式之抽象工厂模式(10)
抽象工厂模式一个抽象的父类定义公共接口,里面定义了一系列产品的生产规范;(多产品)不同的子类都基于父类的实现,定义了一系列符合自己要求的生产规范,公共规范+自有规范;(多等级)每个孙子辈的子类实现具体的生产细节。抽象工厂模式是一系列相关或相互依赖的接口或抽象,无须指定他们具体的类。它针对的是有多个产品的等级结构。而工厂方法模式针对的是一个产品的等级结构。抽象工厂结构图:编者按:1、同工厂方法比较,二者都是选择对应的工厂,由工厂生产对应的产品,目标在于工厂的选择和改变。2、不原创 2020-11-12 15:02:43 · 286 阅读 · 0 评论 -
设计模式系列--23种常见设计模式之工厂方法模式(9)
工厂方法模式一个抽象的父类定义公共接口,设计工厂的生产规范,不同的子类实现工厂接口,生成具体的对象,每个生产的对象也是父类定义对象的具体实现。这样做的目的是将类的实例化操作延迟到子类中完成,按照通用父类引用,运行时决定具体的使用过程。工厂方法结构图:编者按:1、简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。只需告知工厂要什么;2、工厂方法模式实现,在于工厂类中定义了产品的实现标准,客户端的.原创 2020-11-12 15:02:03 · 102 阅读 · 0 评论 -
设计模式系列--23种常见设计模式之简单工厂(8)
简单工厂:实际的使用需求只和工厂对接,不关注具体的实现过程,需要什么,告诉工厂,工厂直接给我们返回产品。比如:我们现在设置了一个产品类型Product,下属有苹果Apple,香蕉Banana,橘子Orange等等;现在有一个工厂类 FruitFactory,专门生产Product,具体生产哪个,你告诉我名字就行getProduct(String name).这就是一个简单工厂类的实现过程,工厂作为交互类,细节工厂决定,需求由目标群体决定。产品类:package cn.pers.原创 2020-11-12 11:05:04 · 98 阅读 · 0 评论 -
设计模式系列--23种常见设计模式之迪米特法则(7)
迪米特法则(LKP:Least Knowledge Principle,又叫最少知识原则)概念一个软件实体应当尽可能少的与其他实体发生相互作用。每一个软件单位对其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位。换句话说:如果两个类不必彼此直接通信,那么这两个类就不应当直接的相互作用;如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。目的解耦,降低类之间的耦合。由于每个类尽量减少对其他类的依赖,很容易使得系统的功能模块相互独立,相互之间也就不存原创 2020-11-11 16:50:34 · 180 阅读 · 0 评论 -
设计模式系列--23种常见设计模式之合成/聚合复用原则(6)
合成/聚合复用原则(Composition/Aggregation Reuse Principle) 也可以叫 组合复用原则。概念是指在一个新的对象中,使用已有的对象,使之成为新对象的一部分,正常发挥其作用。使用原则要尽量使用合成/聚合,尽量不要使用继承。具体实现聚合用来表示“拥有”关系,原有的合成新的,新的不存在了,旧的依然可以存在。整体与部分的关系。代表部分的对象有可能会被多个代表整体的对象所共享,而且不一定会随着某个代表整体的对象被销毁或破坏而被销毁或破坏,部分的生命周期可.原创 2020-11-10 22:45:28 · 249 阅读 · 0 评论 -
设计模式系列--23种常见设计模式之里氏代换原则(5)
概念里氏代换原则(Liskov Substitution Principle LSP)子类型必须能够替换掉他们的父类型。一个软件实体如果使用的是一个父类的话,一定可以用它的子类替换。任何基类可以出现的地方,子类一定可以出现。 LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。里氏代换原则是对“开-闭”原则的补充。实现“开-闭”原则的关键步骤就是抽象化。而基类与子类的继承关系就是抽象化的具体实现,所以里原创 2020-11-07 13:46:38 · 129 阅读 · 0 评论 -
设计模式系列--23种常见设计模式之依赖倒转原则(4)
概念依赖倒转原则(Dependence Inversion Principle, DIP)1、高层模块不应该依赖低层模块,两者都应该依赖其抽象2、抽象不应该依赖细节,细节应该依赖抽象问题由来依赖具体的细节后,需要扩展一个新的细节,就需要同步的对相关模块进行修改。解决方案抽象具体的实现过程,形成比如接口,抽象类等,依赖抽象层,具体的执行细节交给执行过程中再去决定(多态的原理)。上一节说了开放封闭原则,讲究 要抽象和解耦,易扩展,所以依赖倒转原则的目的也是一致的。简单理解比如 我原创 2020-11-05 20:33:13 · 138 阅读 · 0 评论 -
设计模式系列--23种常见设计模式之开放封闭原则(3)
概念开放封闭原则(OCP,Open Closed Principle)是所有面向对象原则的核心。软件设计本身所追求的目标就是封装变化、降低耦合,而开放封闭原则正是对这一目标的最直接体现。对于开放,我们是指在对外扩展,新需求,新功能需要加入,我们的软件本身是易于扩展的,所以“适应时代的发展需要”;对于封闭,我们是指软件本身的功能是不允许修改的,要保持独立性和稳定性,避免再次发生改动。问题由来比如我们有个实现各种计算的功能,加减乘除,现在需要再加上 取余运算;此时 需要在原有的实现类中 添加原创 2020-11-02 15:37:36 · 229 阅读 · 0 评论 -
设计模式系列--23种常见设计模式之单一职责原则(2)
概念单一职责原则(SRP:Single responsibility principle)又称单一功能原则,它规定一个类应该只有一个发生变化的原因。通俗来讲就是 一个类或模块应该有且只负责一件事。为什么,因为假如负责了2件事,任何一件事需要改变就引起了该模块的改变,违反了 “一个类应该只有一个发生变化的原因”。所以就可以简单的理解为就是 一个类或模块细分到只负责一个功能,这就要求了这个类不能太臃肿,要简单精细。问题由来有一个类T负责两个不同的职责:职责P1和职责P2。当因为职责P1的需求发原创 2020-10-28 11:06:50 · 165 阅读 · 0 评论 -
设计模式系列--23种常见设计模式之开篇(1)
前一段时间看了《大话设计模式》这本书,觉得很不错,而建议大家去看。从今天开始,这一系列文章主要去写设计模式相关,那么参考原作者的目录结构和文章的内容,根据自己的一些理解,进行一些总结归纳,感谢原作者的诙谐幽默的教学风格和简单易懂的说明,也让我对设计模式有了新的认识。 第一篇文章,按照惯例,一般都是做个简单的说明,那我们就先说一下常用的遵循的原则,和对所有的设计模式的一个简单归类。面向...原创 2018-05-17 22:12:12 · 279 阅读 · 0 评论