![](https://img-blog.csdnimg.cn/20190315154243727.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
设计模式
设计模式-Java
superbeyone
士,不可以不弘毅,任重而道远!
展开
-
设计模式_18_组合模式
文章目录组合模式1. 分析2. 示例3. 源码组合模式1. 分析定义将对象组合成树形结构以表示 “部分-整体” 的层次结构组合模式使客户端对单个对象和组合对象保持一致的方式处理类型 结构型适用场景希望客户端可以忽略组合对象对单个对象的差异时处理一个树形结构时优点清楚的定义分层次的复杂对象,表示对象的全部或部分层次让客户端忽略层次的差异,方便对整个层次结构进...原创 2019-10-15 17:57:44 · 122 阅读 · 0 评论 -
设计模式_17_享元模式
文章目录享元模式1. 分析2. 示例3. 源码享元模式1. 分析定义提供了减少对象数量从而改善应用所需的对象结构的方式运用共享技术有效地支持大量细粒度的对象类型: 结构型适用场景常常应用于系统底层的开发,以便解决系统的性能问题系统有大量相似的对象、需要缓冲池的场景如(String、数据库连接池、线程池)优点减少对象的创建,降低内存中对象的数量,减少内存的占...原创 2019-10-15 17:03:35 · 107 阅读 · 0 评论 -
设计模式_16_适配器模式
文章目录适配器模式1. 分析2. 示例2.1 类适配2.2 对象适配3. 源码适配器模式1. 分析定义将一个类的接口(被适配者)转换成客户期望的另一个接口(目标类)使原本接口不兼容的类可以一起工作类型 结构型适用场景已经存在的类,它的方法和需求不匹配时(方法结果相同或相似)不是软件设计阶段考虑的设计模式,是随着软件维护,由于不同产品、不同厂家造成功能类似而接口不相同...原创 2019-10-15 12:49:08 · 98 阅读 · 0 评论 -
设计模式_15_装饰者模式
文章目录装饰者模式1. 分析2. 示例2.1 未使用装饰者模式2.2 使用装饰者模式3. 源码装饰者模式1. 分析定义在不改变原有对象的基础之上,将功能附加到对象上提供了比继承更有弹性的替代方案(扩展原有对象功能)类型: 结构型适用场景扩展一个类的功能或给一个类添加附加职责动态的给一个对象添加功能,这些功能可以再动态的撤销优点继承的有力补充,比继承灵活,不改...原创 2019-05-31 13:58:32 · 193 阅读 · 0 评论 -
设计模式_14_外观模式
文章目录外观模式1. 分析2.示例3. 使用该模式的源码类外观模式1. 分析定义:又叫门面模式,提供了一个统一的接口,用来访问子系统中的一群接口外观模式定义了一个高层接口,让子系统更容易使用类型:结构型适用场景子系统越来越复杂,增加外观模式提供简单调用接口构建多层系统结构,利用外观对象作为每层的入口,简化层间调用优点简化调用过程,无需深入了解子系统,防止带来风险减少系统...原创 2019-05-27 17:08:35 · 130 阅读 · 0 评论 -
设计模式_13_原型模式
文章目录原型模式1. 分析原型模式1. 分析定义:指原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象不需要知道任何创建的细节,不调用构造函数类型:创建型适用场景:类初始化消耗较多资源new 产生的一个对象需要比较繁琐的过程(数据准备、访问权限等)构造函数比较复杂循环体中产生大量对象时优点:原型模式性能比直接new一个对象性能高简化创建过程缺点...原创 2019-05-27 10:35:39 · 109 阅读 · 0 评论 -
设计模式_12_单例模式
文章目录单例模式1. 分析2. 示例2.1 懒汉式2.2 懒汉式双重锁检测2.3 静态内部类单例模式2.4 饿汉式单例模式1. 分析定义:包证一个类仅有一个实例,并提供一个全局访问点类型:创建型适用场景:想确保任何情况下都绝对只有一个实例优点:在内存中只有一个实例,减少了内存开销可以避免对资源的多重占用设置全局访问点,严格控制访问缺点:没有接口,扩展困难...原创 2019-05-16 15:57:33 · 130 阅读 · 0 评论 -
设计模式_11_建造者模式
文章目录建造者模式1. 分析2. 示例3. 源码建造者模式1. 分析定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示用户只需指定需要建造的类型就可以得到它们,建造过程及细节不需要知道类型:创建型适用场景:如果一个对象有非常复杂的内部结构(很多属性)想把复杂对象的创建和使用分离优点:封装性好,创建和使用分离扩展性好,建造类之间独立,一定...原创 2019-04-24 12:00:58 · 110 阅读 · 0 评论 -
设计模式_10_抽象工厂模式
抽象工厂模式定义:抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口无须指定它们具体的类类型:创建型客户端(应用层)不依赖于产品类实例如何被创建、实现等细节强调一系列相关的产品对象(属于同一产品族)一起使用创建对象需要大量重复的代码提供一个产品类的库,所有的产品以同样的接口出现,从而使客户端不依赖于具体实现优点:具体产品在应用层代码隔离,无须关系创建细节将一个系列的产品族...原创 2019-04-23 17:04:29 · 108 阅读 · 0 评论 -
设计模式_09_工厂方法模式
工厂方法模式定义:定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类,工厂方法让类的实例化推迟到子类中进行类型:创建型适用场景:创建对象需要大量重复的代码客户端(应用层)不依赖于产品类实例如何被创建、实现等细节一个类通过其子类来指定创建哪个对象优点:用户只需要关心所需产品对应的工厂,无须关心创建细节加入新产品符合开闭原则,提高可扩展性缺点:类...原创 2019-03-22 17:43:49 · 111 阅读 · 0 评论 -
设计模式_08_简单工厂模式
简单工厂模式定义:由一个工厂对象决定创建出哪一种产品类的实例类型:创建型,但不属于GOF23种设计模式适用场景:工厂类负责创建的对象比较少客户端(应用层)只知道传入工厂类的参数,对于如何创建对象(逻辑)不关心优点:只需要传入一个正确的参数,就可以获取所需要的对象,而无须知道其创建细节缺点:工厂类的职责相对过重,增加新的产品需要修改工厂类的判断逻辑,违背开闭原...原创 2019-03-22 17:19:46 · 106 阅读 · 0 评论 -
设计模式_07_聚合复用原则
合成(组合)/聚合复用原则定义:尽量使用对象组合/聚合,而不是继承关系达到软件复用的目的聚合has-A关系 和 组合contains-A关系优点:可以使系统更加灵活,降低类与类之间的耦合度,一个类的变化对其他类造成的影响相对较少何时使用合成/聚合、继承UML 图示聚合:has-A关系比较弱,聚合关系中,代表部分事物的对象与代表聚合事物的对象生命周期无关,即使删除了聚合对象,也不...原创 2019-03-19 12:12:06 · 152 阅读 · 0 评论 -
设计模式_06_ 里氏替换原则
里氏替换原则定义:如果对每一个类型为T1的对象o1,都有类型为T2的对象o2,使得以T1定义的所有程序P在所有的对象o1都替换成o2时,程序P的行为没有发生变化,那么类型T2是类型T1的子类型定义扩展:一个软件实体如果适用一个父类的话,那一定适用其子类,所有引用父类的地方必须能透明的适用其子类的对象,子类对象能够替换父类对象,而程序逻辑不变引申意义:子类可以扩展父类的功能,...原创 2019-03-19 11:59:31 · 100 阅读 · 0 评论 -
设计模式_05_迪米特原则
迪米特原则定义:一个对象应该对其他对象保持最少的了解。又叫最少知道原则尽量降低类与类之间的耦合优点:降低类之间的耦合public class Course {}public class TeamLeader { public void checkNumOfCourses(List<Course> courses) { System.out.p...原创 2019-03-18 17:13:35 · 153 阅读 · 0 评论 -
设计模式_04_接口隔离原则
接口隔离原则定义:用多个专门的接口,而不使用单一的总接口,客户端不应该依赖它不需要的接口一个类对一个类的依赖应该建立在最小的接口上建立单一接口,不要建立庞大臃肿的接口尽量细化接口,接口中的方法尽量少优点:符合高内聚、低耦合的设计思想,从而使得类具有很好的可读性、可扩展性和可维护性类图:...原创 2019-03-18 17:12:35 · 121 阅读 · 0 评论 -
设计模式_03_单一职责原则
单一职责原则定义:不要存在多于一个导致类变更的原因一个类/接口/方法只负责一项职责优点:降低类的复杂度、提高类得可读性,提高系统的可维护性、降低因变更引起的风险类级别public class FlyBird { public void mainMoveMode(String birdName) { System.out.println(birdName + "...原创 2019-03-18 17:02:43 · 135 阅读 · 0 评论 -
设计模式_02_依赖倒置原则
依赖倒置原则定义:高层模块不应该依赖底层模块,二者都应该依赖其抽象抽象不应该依赖细节;细节应该依赖抽象针对接口编程,不要针对实现编程优点:可以减少类之间的耦合性、提高系统稳定性,提高代码可读性和可维护性,可降低修改程序所造成的风险public interface Course { void study();}public class JavaCourse impleme...原创 2019-03-15 17:24:59 · 110 阅读 · 0 评论 -
设计模式_01_开闭原则
文章目录开闭原则开闭原则定义:一个软件实体入类、模块和函数应该对扩展开放,对修改关闭用抽象构建框架,用实现扩展细节(面向抽象编程)优点:提高软件系统的可复用性以及可维护性/** * @author Mr.superbeyone * @project design-pattern * @className Course * @description Course * @da...原创 2019-03-15 17:24:52 · 137 阅读 · 0 评论 -
Reactor模式
文章目录Reactor模式Reactor模式Reactor模式的角色构成(Reactor模式一共有5种角色构成):Handle(句柄或是描述符):本质上表示一种资源,是由操作系统提供的;该资源用于表示一个个的事件,比如说文件描述符,或是针对网络编程中的Socket描述符。世界既可以来自于外部,也可以来自于内部;外部事件比如说客户端的连接请求,客服端发送过来数据等;内部事件比如说操作...原创 2018-12-29 14:24:46 · 116 阅读 · 0 评论 -
单例模式的7种写法
文章目录1. 懒汉模式,单例实例在第一次使用时进行创建,非线程安全2. 饿汉模式,单例实例在类装载时进行创建,线程安全3. 懒汉模式,单例实例在第一次使用时进行创建,线程安全,不推荐使用4. 懒汉模式,双重同步锁单例模式,单例实例在第一次使用时创建,非线程安全5. 懒汉模式,双重同步锁单例模式,单例实例在第一次使用时创建,线程安全6. 饿汉模式,单例实例在类装载时进行创建,线程安全7. 枚举模式...原创 2018-09-30 10:24:12 · 366 阅读 · 0 评论