设计模式
文章平均质量分 95
24种设计模式介绍与6大设计原则介绍
天明少侠
这个作者很懒,什么都没留下…
展开
-
行为型模式--策略模式【Strategy Pattern】
介绍策略模式定义了算法家族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化,不会影响到使用算法的用户在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。实现我们将创建一个定义活动的 Strategy 接口和实现了 Strategy 接口的实体策略类。Context 是一个使用了某种...原创 2018-11-02 13:44:22 · 271 阅读 · 0 评论 -
设计模式之六大设计原则
设计模式之六大设计原则1. 单一职责原则(Single Responsibility Principle,SRP)定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。解决方案:遵循单一职责原则。分别建立...原创 2018-02-24 19:29:33 · 307 阅读 · 0 评论 -
JDK源码中用到的设计模式
JDK源码中用到的设计模式JDK源码中使用的设计模式原创 2018-09-27 22:58:19 · 1458 阅读 · 0 评论 -
创建型模式--建造者模式【Builder Pattern】
介绍建造者模式使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。源码java.lang.StringBuilder#append()@Overridepublic StringBuilder append(boolean b) { super.append(b); return this;}j...原创 2018-10-20 19:52:13 · 222 阅读 · 0 评论 -
行为型模式--观察者模式【Observer Pattern】
观察者模式【又被称为发布-订阅(Publish/Subscribe)模式】,属于行为型模式的一种,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己。表2.4 观察者模式角色 角色 作用 主题接口 指被观察的对象。当其状态发生改变或者某事...原创 2018-04-25 20:07:50 · 236 阅读 · 0 评论 -
结构型模式--装饰器模式【Decorator Pattern】
前言 装饰器模式拥有一个设计非常巧妙的结构,它可以动态添加对象功能。 在基本的设计原则中,有一条重要的原则叫做合成/聚合复用原则。 代码复用应尽量使用委托,而不是继承。继承是一种紧密耦合,而委托是松散耦合。 装饰者模式采用的是委托机制。复用组件。概念 装饰器模式 允许向一个现有的对象添加新的功能,同时又不改变其结构。装饰者可以在所委托被装饰者的行为之前或...原创 2018-04-17 18:43:54 · 302 阅读 · 0 评论 -
创建型模式--单例模式【Singleton Pattern】
单例模式定义单例模式确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,且属于创建类模式。 Ensure that only one instance of a class is created. Provide a global point of access to the object. 单例模式类图饿汉式单例 public...原创 2018-03-22 21:23:22 · 249 阅读 · 0 评论 -
结构型模式--代理模式【Proxy Pattern】
代理模式 给某一个对象提供一个代理,并由代理对象控制对原对象的引用。 为其他对象提供一种代理以控制对这个对象的访问。 代理模式的实现方式静态代理动态代理代理模式应用场合 系统启动时的延迟加载 远程调用的网络代理 考虑安全因素的安全代理 Spring AOP C3P0数据库连接池静态代理UML类图 ...原创 2018-03-27 22:01:37 · 251 阅读 · 0 评论 -
结构型模式--享元模式【Flyweight Pattern】
定义运用共享技术来有効地支持大量细粒度对象的复用。它通过共享已经存在的对象来大幅度减少需要创建的对象数量、避免大量相似类的开销,从而提高系统资源的利用率。享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。优缺点享元模式的主要优点是:相同对象只要保存一份,这降低了系统中对象的数量,从而降低了系统中细粒度对象给内存带来的压力。其主要缺点是:为了使对象可以共享,需要将一...原创 2019-09-30 15:39:41 · 162 阅读 · 0 评论 -
结构型模式--外观模式【Facade Pattern】
结构型模式–外观模式【Facade Pattern】外观模式的定义与特点外观(Facade)模式的定义:是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体的细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。外观(Facade)模式是“迪米特法则”的典型应用,它有以下主要优点降低...原创 2019-09-29 16:56:04 · 117 阅读 · 0 评论 -
结构型模式--桥接模式【Bridge Pattern】
桥接模式的定义与特点桥接(Bridge)模式的定义如下:将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。桥接(Bridge)模式的优点是:由于抽象与实现分离,所以扩展能力强;其实现细节对客户透明。缺点是:由于聚合关系建立在抽象层,要求开发者针对抽象化进行设计与编程,这增加了系统的理解与设计难度。参考文档桥接模式...原创 2019-09-29 10:14:55 · 111 阅读 · 0 评论 -
创建型模式--抽象工厂模式【Abstract Factory】
模式定义抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,属于对象创建型模式。抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在抽象工...原创 2019-09-28 16:45:22 · 232 阅读 · 0 评论 -
创建型模式--工厂方法模式【Factory Method Pattern】
模式定义工厂方法模式(Factory Method Pattern)又称为工厂模式,也叫虚拟构造器(Virtual Constructor)模式或者多态工厂(Polymorphic Factory)模式,它属于类创建型模式。在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟...原创 2019-09-28 14:52:53 · 143 阅读 · 0 评论 -
创建型模式--简单工厂模式【Simple Factory Pattern】
模式定义简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。JDK应用public final static DateFormat getDateIns...原创 2019-09-28 12:23:11 · 173 阅读 · 0 评论 -
创建型模式--原型模式(Prototype Pattern)
定义GOF给出的原型模式定义如下:Specify the kind of objects to create using a prototypical instance, and create new objects by copying this prototype. (使用原型实例指定将要创建的对象类型,通过复制这个实例创建新的对象。)JDK源码中应用java.lang.Obje...原创 2019-09-18 22:49:10 · 169 阅读 · 0 评论 -
结构型模式--适配器模式【Adapter Pattern】
适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。意图:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。主要解决:主要解决在软件系统中,常常要将一些"现存的对象"放到新的环境中,而新环境要求的接口是现对象不能满足的。JDK源码应用ja...原创 2019-09-07 20:36:18 · 776 阅读 · 0 评论 -
行为型模式--备忘录模式【Memento Pattern】
定义在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态JDK中应用java.util.Date(Date对象通过自身内部的一个long值来实现备忘录模式)java.io.Serializable(序列化和反序列化)参考文档备忘录模式(详解版)备忘录模式...原创 2019-10-08 17:05:28 · 131 阅读 · 0 评论