![](https://img-blog.csdnimg.cn/20190522215538547.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
设计模式
设计模式详解
皓晨的架构笔记
生命不息,奋斗不止!
展开
-
面向对象原则之迪米特法则
迪米特法则基本介绍迪米特法则(Law of Demeter, LoD),意为一个软件实体应当尽可能少地与其他实体发生相互作用。如果一个系统符合迪米特法则,那么当其中某一个模块发生修改时,就会尽量少地影响其他模块,扩展会相对容易,这是对软件实体之间通信的限制,迪米特法则要求限制软件实体之间通信的宽度和深度。迪米特法则可降低系统的耦合度,使类与类之间保持松散的耦合关系。迪米特法则还有几种定义形...原创 2019-12-22 21:37:11 · 255 阅读 · 0 评论 -
面向对象原则之合成复用原则
合成复用原则基本介绍合成复用原则(Composite Reuse Principle, CRP),意为尽量使用对象组合,而不是继承来达到复用的目的。合成复用原则就是在一个新的对象里通过关联关系(包括组合关系和聚合关系)来使用一些已有的对象,使之成为新对象的一部分;新对象通过委派调用已有对象的方法达到复用功能的目的。简言之:复用时要尽量使用组合/聚合关系(关联关系),少用继承。在面向对象设计...原创 2019-12-22 21:15:33 · 306 阅读 · 0 评论 -
面向对象原则之接口隔离原则
接口隔离原则基本介绍客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的的接口上如下图所示:类A通过接口Interface1依赖类B,类C通过接口Interface1依赖类D,如果接口Interface1对于类C来说不是最小接口,那么类B和类D必须去实现他们不需要的方法。按照接口隔离原则,应该将接口Interface1拆分成独立的几个接口,类A和类C分别与他们需要的...原创 2019-12-21 22:12:19 · 141 阅读 · 0 评论 -
面向对象原则之里氏代换原则
里氏代换原则基本介绍里氏代换原则(Liskov Substitution Principle, LSP),所有引用父类的地方必须能透明地使用其子类的对象。里氏代换原则告诉我们,在软件中将一个基类对象替换成它的子类对象,程序将不会产生任何错误和异常,反过来则不成立,如果一个软件实体使用的是一个子类对象的话,那么它不一定能够使用基类对象。例如:我喜欢动物,那我一定喜欢狗,因为狗是动物的子类;但是...原创 2019-12-21 20:29:39 · 244 阅读 · 0 评论 -
面向对象原则之开闭原则
开闭原则基本介绍开闭原则(Open-Closed Principle, OCP),是面向对象的可复用设计的第一块基石,它是最重要的面向对象设计原则,是由Bertrand Meyer于1988年提出,意为一个软件实体应当对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。任何软件系统都需要面临一个很重要的问题,即它们的需求会随时间的推移而发生变化。当软件系统需要面对新的需...原创 2019-12-17 22:12:02 · 486 阅读 · 0 评论 -
面向对象原则之单一职责原则
单一职责原则基本介绍单一职责原则,顾名思义,即专业的人做专业的事,一个类只负责一项职责。例如有一个类A负责两个不同的职责:职责1和职责2,当职责1需求变更需要修改类A时,可能会影响到职责2的业务,所以需要将类A的两个职责分解为A1和A2,这样就互不影响了。代码示例就拿我们生活中常用的交通工具来说,看如下示例:版本一:/** * 单一职责原则版本一 * 1、问题:不同的交通工具有不同...原创 2019-12-15 20:41:05 · 155 阅读 · 0 评论 -
设计模式之组合模式
前言在我们日常工作或生活中,存在很多‘部分-整体’关系,例如:省市县的关系、公司组织架构、软件系统的菜单、文件系统中的文件与文件夹等,对于这种简单对象和复合对象之间关系,我们可以用组合模式来处理。什么是组合模式组合模式(Composite Pattern)又叫部分整体模式,属于结构型设计模式。组合模式,就是在一个对象中包含其他对象,这些被包含的对象可能是终点对象(不再包含别的对象),也有可...原创 2019-06-26 23:01:28 · 163 阅读 · 0 评论 -
设计模式之桥接模式
前言在我们的日常开发中,比如电商项目的商品分类,以电脑为例,电脑可分为台式机、笔记本、平板电脑,而上述几种不同类型的电脑又可以分为好多种品牌,如联想、戴尔、华硕等等。那我们如何来设计这种分类结构呢?有同学说可能想到用多重继承不就解决了(联想笔记本>笔记本>电脑),这种方式是可以解决,但带来的问题就是会产生很多子类,扩展性很差。那如何优雅的来处理这种问题呢,使用桥接模式就能很好地解决这...原创 2019-06-16 17:31:07 · 365 阅读 · 0 评论 -
设计模式之代理模式
什么是代理模式代理模式(Proxy Pattern)通过代理控制对象的访问,可以详细访问某个对象的某个方法。在调用这个方法之前做前置处理,在调用这个方法之后做后置处理。即AOP核心思想:面向切面编程。代理的分类静态代理:自己定义代理类动态代理:动态生成代理类2.1. Jdk自带的动态代理2.2. Cglib2.3. Javaassist(字节码操作库)常见的应用场景Sp...原创 2019-06-09 22:08:15 · 106 阅读 · 0 评论 -
设计模式之适配器模式
什么是适配器模式适配器模式(Adapter Pattern)是两个不兼容的接口之间的桥梁,主要用来解决两个接口之间不兼容的问题,它不用改变原有接口,就可以使原来不能直接调用的接口变得可以调用。比如我们常见的转接头、读卡器其实就是充当着适配器这个角色。适配器模式的三个角色目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口;需要适配的类(Adaptee)...原创 2019-06-08 21:06:16 · 148 阅读 · 0 评论 -
设计模式之原型模式
什么是原型模式原型模式(Prototype Pattern) 就是Java中的克隆技术。这种设计模式属于创建型模式,是以某个对象为原型,复制生成出新的对象,这种方式效率较高。原型模式类似于new,但是不同于new。new创建新的对象属性采用的是默认值。克隆出的对象的属性值完全和原型对象相同。并且克隆出的新对象改变不会影响原型对象。原型模式的三个角色抽象原型类(prototype):生明...原创 2019-06-07 22:51:23 · 96 阅读 · 0 评论 -
设计模式之建造者模式
什么是建造者模式建造者模式(Builder Pattern) 又叫生成器模式,建造者模式可以将一个产品的内部表象与产品的生产过程抽象出来,从而可以使同一个建造过程生成具有不同的内部表象的产品对象。当用户使用的时候只需要指定建造对象的类型就可以得到该对象,而无须知道具体的实现细节。造者模式中的四个角色Product(产品角色): 一个具体的产品对象;Builder(抽象建造者): 创建...原创 2019-06-04 22:26:50 · 261 阅读 · 0 评论 -
设计模式之责任链模式
什么是责任链模式责任链模式(Chain of Responsibility Pattern)在设计模式里属于行为型模式。在这种模式中,通常每个接收者都包含对另一个接收者的引用。从而形成一个调用链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。为了便于理解,下...原创 2019-05-18 18:24:59 · 1722 阅读 · 1 评论 -
设计模式之抽象工厂模式
什么是抽象工厂模式抽象工厂模式Abstract Factory Pattern提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。在工厂方法模式中,我们的具体创建者每次使用都只能创建一个同类型的对象,假如我们现在需要的是多个不同类型的对象,工厂方法就满足不了需求了。这时我们可以把多个工厂方法组合到一个类,这就是抽象工厂模式。在前面我们讲到了简单工厂模式和工厂方法模式,简单...原创 2019-05-22 21:32:16 · 155 阅读 · 0 评论 -
设计模式之工厂方法模式
什么是工厂方法模式工厂方法模式Factory Method,又称多态性工厂模式。在工厂方法模式中,核心的工厂类不再负责所有的产品的创建,而是将具体创建的工作交给子类去做。该核心类成为一个抽象工厂角色,仅负责给出具体工厂子类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。工厂方法模式是简单工厂模式的衍生,解决了许多简单工厂模式的问题。首先完全实现‘开-闭 原则’,实现了可扩展。其次更...原创 2019-05-20 22:53:58 · 198 阅读 · 0 评论 -
设计模式之简单工厂模式
什么是工厂模式工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象代码示例我将创建一个Car接口和实现Car接口实现类。接下来是定义工厂类CarFactory。此处演示的是使用CarFact...原创 2019-04-21 08:38:58 · 147 阅读 · 0 评论 -
设计模式之单例模式
什么是单例模式单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的一个类只有一个实例。即一个类只有一个对象实例。有两种构建方式:懒汉方式:指全局的单例实例在第一次被使用时构建;饿汉方式:指全局的单例实例在类装载时构建;单例模式-饿汉式代码示例public class SingletionOfHungry {...原创 2019-04-20 22:44:26 · 104 阅读 · 0 评论 -
设计模式概述
什么是设计模式设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原...原创 2019-04-20 22:33:36 · 228 阅读 · 0 评论