设计模式
文章平均质量分 80
谦丶丶
我相信我有未来!
展开
-
模板模式
模板模式 定义:定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变算法的结构即可重定义该算法的某些特定步骤。 通俗点的理解就是 :完成一件事情,有固定的数个步骤,但是每个步骤根据对象的不同,而实现细节不同;就可以在父类中定义一个完成该事情的总方法,按照完成事件需要的步骤去调用其每个步骤的实现方法。每个步骤的具体实现,由子类完成。 1.1 模式结构和代码示例 抽象父类(AbstractClass):实现了模板方法,定义了算法的骨架。 具体类(ConcreteClass).转载 2021-03-02 11:37:32 · 124 阅读 · 0 评论 -
策略模式
策略模式 定义: 策略模式定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户。 意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。 主要解决:在有多种算法相似的情况下,使用 if...else 所带来的复杂和难以维护。 何时使用:一个系统有许多许多类,而区分它们的只是他们直接的行为。 如何解决:将这些算法封装成一个一个的类,任意地替换。 关键代码:实现同一个接口。 优点: 1、算法可以自由切换。 2、避免使用多重条件判断。 3、扩转载 2021-03-02 11:35:54 · 111 阅读 · 0 评论 -
享元模式
享元模式 定义:通过共享的方式高效的支持大量细粒度的对象。 主要解决:在有大量对象时,有可能会造成内存溢出,我们把其中共同的部分抽象出来,如果有相同的业务请求,直接返回在内存中已有的对象,避免重新创建。 何时使用: 1、系统中有大量对象。 2、这些对象消耗大量内存。 3、这些对象的状态大部分可以外部化。 4、这些对象可以按照内蕴状态分为很多组,当把外蕴对象从对象中剔除出来时,每一组对象都可以用一个对象来代替。 5、系统不依赖于这些对象身份,这些对象是不可分辨的。 如何解决:用唯一标识码判断,如果在转载 2021-03-02 11:34:28 · 144 阅读 · 0 评论 -
组合模式
组合模式 定义:有时又叫作部分-整体模式,它是一种将对象组合成树状的层次结构的模式,用来表示“部分-整体”的关系,使用户对单个对象和组合对象具有一致的访问性。 意图:将对象组合成树形结构以表示"部分-整体"的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 主要解决:它在我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。 何时使用: 1、您想表示对象的部分-整体层次结构(树形结构)。 2、您希望转载 2021-03-02 11:32:44 · 84 阅读 · 0 评论 -
桥接模式
桥接模式 定义: 将抽象部分与它的实现部分分离,使它们都可以独立地变化。 1.1 案例 看下图手机与手机软件的类图 增加一款新的手机软件,需要在所有手机品牌类下添加对应的手机软件类,当手机软件种类较多时,将导致类的个数急剧膨胀,难以维护 手机和手机中的软件是什么关系? 手机中的软件从本质上来说并不是一种手机,手机软件运行在手机中,是一种包含与被包含关系,而不是一种父与子或者说一般与特殊的关系,通过继承手机类实现手机软件类的设计是违反一般规律的。 如果Oppo手机实现了wifi功能,继承它的Oppo转载 2021-03-01 15:45:13 · 74 阅读 · 0 评论 -
外观模式
外观模式 定义: 隐藏了系统的复杂性,并向客户端提供了一个可以访问系统的接口。 1.1 模式结构和代码示例 简单来说,该模式就是把一些复杂的流程封装成一个接口供给外部用户更简单的使用。这个模式中,设计到3个角色。 1).门面角色:外观模式的核心。它被客户角色调用,它熟悉子系统的功能。内部根据客户角色的需求预定了几种功能的组合。(客户调用,同时自身调用子系统功能) 2).子系统角色:实现了子系统的功能。它对客户角色和Facade时未知的。它内部可以有系统内的相互交互,也可以由供外界调用的接口转载 2021-03-01 15:42:54 · 47 阅读 · 0 评论 -
代理模式
代理模式 定义:代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。 举个例子来说明:假如说我现在想买一辆二手车,虽然我可以自己去找车源,做质量检测等一系列的车辆过户流程,但是这确实太浪费我得时间和精力了。我只是想买一辆车而已为什么我还要额外做这么多事呢?于是我就通过中介公司来买车,他们来给我找车源,帮我办理车辆过户流程,我只是负责选择自己喜欢的车,然后付钱就可以了。用图表示如下: 1.1 为什么要用代理模式? 中介隔离作用:在某些情况下,一转载 2021-03-01 14:56:42 · 113 阅读 · 0 评论 -
装饰者模式
装饰者模式 定义:动态的将新功能附加到对象上。在对象功能扩展方面,它比继承更有弹性。 1.1 装饰者模式结构图与代码示例 1.Component(被装饰对象的基类) 定义一个对象接口,可以给这些对象动态地添加职责。 2.ConcreteComponent(具体被装饰对象) 定义一个对象,可以给这个对象添加一些职责。 3.Decorator(装饰者抽象类) 维持一个指向Component实例的引用,并定义一个与Component接口一致的接口。 4.ConcreteDecora...转载 2021-03-01 10:36:28 · 75 阅读 · 0 评论 -
适配器模式
适配器模式 定义: 适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。 主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。 1.1 类适配器模式 通过多重继承目标接口和被适配者类方式来实现适配 举例(将USB接口转为VGA接口),类图如下: USBImpl的代码: public class USBImpl implements USB{ @Override public void showPP...转载 2021-03-01 10:25:43 · 88 阅读 · 0 评论 -
原型模式
原型模式 定义:通过复制现有实例来创建新的实例,无需知道相应类的信息。 简单地理解,其实就是当需要创建一个指定的对象时,我们刚好有一个这样的对象,但是又不能直接使用,我会clone一个一毛一样的新对象来使用;基本上这就是原型模式。关键字:Clone。 1.1 深拷贝和浅拷贝 浅复制:将一个对象复制后,基本数据类型的变量都会重新创建,而引用类型,指向的还是原对象所指向的。 深复制:将一个对象复制后,不论是基本数据类型还有引用类型,都是重新创建的。简单来说,就是深复制进行了完全彻底的复制,而浅复制不.转载 2021-02-23 14:21:25 · 60 阅读 · 0 评论 -
生成器模式
设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 A、创建模式(5种) 工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 1 工厂模式 1.1 简单工厂.转载 2021-02-23 14:16:02 · 187 阅读 · 0 评论 -
工厂方法模式与抽象工厂模式
工厂方法模式 设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 1 工厂模式 1.1 简单工厂模式 定义:定义了一个创建对象的类,由这个类来封装实例化对象的行为。 .转载 2021-02-23 14:06:50 · 343 阅读 · 0 评论 -
单例模式
设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 1 单例模式 定义:确保一个类最多只有一个实例,并提供一个全局访问点 单例模式可以分为两种:预加载和懒加载 1.1.转载 2021-02-23 13:42:05 · 151 阅读 · 0 评论