
设计模式
B Cabbage
这个作者很懒,什么都没留下…
展开
-
设计模式(二十二)策略模式
文章目录模式动机模式定义模式结构模式分析模式实例模式优缺点模式适用环境和应用策略模式与状态模式的区别模式动机为了完成某一项任务,往往有多种不同的方式,每一种方式称为一个策略,我们可以根据环境或者条件的不同选择不同的策略来完成该项任务。在软件系统中,有许多算法可以实现某一功能,如查找,排序等,一种常用的方法是硬编码,就是在一个类中提供多个方法,每一个方法对应一个具体的查找算法,也可以将这些查...原创 2020-04-09 14:39:52 · 174 阅读 · 0 评论 -
设计模式(二十一)状态模式
文章目录模式动机模式定义模式结构模式分析模式实例模式优缺点模式应用模式动机在很多情况下,一个对象的行为取决于一个或多个动态变化的属性,这样的属性叫做状态,这样的对象叫做有状态的对象,这样的对象状态是从实现定义好的一系列值中取出的,当一个这样的对象与外部实际产生互动时,其内部状态就会发生改变,从而行为也随之改变。模式定义状态模式(State Pattern):允许一个对象在其内部状态改...原创 2020-04-09 14:38:04 · 171 阅读 · 0 评论 -
设计模式(十九)备忘录模式
文章目录一 . 模式动机二 . 模式定义三 . 模式结构四 . 模式实列五 . 模式分析六 . 模式优缺点七 . 适用环境和应用一 . 模式动机让软件系统可以回到误操作以前,就相当于撤销上一步。备忘录模式就是为了实现这个功能的模式。因此我们需要记录一个对象的内部状态,在具体实现过程中,需要实现备份点和撤销机制,必须事先将状态保存起来。二 . 模式定义备忘录模式(Memento Pa...原创 2020-04-05 02:25:53 · 227 阅读 · 0 评论 -
设计模式(十八)中介者模式
文章目录一 . 模式动机二 . 模式定义三 . 模式结构四 . 模式实列五 . 模式分析六 . 模式优缺点七 . 适用场景和应用八 . 模式扩展一 . 模式动机中介者模式是为了解决系统结构复杂(对象之间存在大量的相互关联和调用),对象可重用性差,系统扩展性低。二 . 模式定义用一个中介对想来封装一系列对象交互,中介者适用各对象不需要显示的相互引用,从而使其松耦合,并且可以独立的改变他...原创 2020-04-03 21:24:17 · 324 阅读 · 0 评论 -
设计模式(十七)迭代器模式
文章目录一 . 模式动机二 . 模式定义三 . 模式结构四 . 实例代码五 . 模式分析六 . 模式优缺点七 . 应用一 . 模式动机集合有存储数据和遍历数据的职责,但这没有遵循单一职责原则,因此我们可以把遍历单独拿出来封装,做到单一职责原则。二 . 模式定义提供一中种方法来访问聚合对象,而不用暴露这个对象的内部表示,其别名为游标。迭代器是一种对象型模式。三 . 模式结构I...原创 2020-04-03 21:21:34 · 135 阅读 · 0 评论 -
设计模式(十六)解释器模式
文章目录一 . 模式动机二 . 模式定义三 . 模式结构四 . 模式分析五 . 模式优缺点七 . 适用场景和应用一 . 模式动机如果系统中某一特定类型的问题发生的频率很高,此时可以考虑将这些问题的实例表述为一个语言中的句子,因此可以构件一个解释器,该解释器通过解释这些句子来解决这些问题。二 . 模式定义解释器模式(Interpreter Pattern):定义语言的文法,并且建立一个...原创 2020-04-03 13:57:04 · 137 阅读 · 0 评论 -
设计模式(十五)命令模式
文章目录一 . 模式动机二 . 模式定义三四 . 模式分析五 . 模式实例六 . 模式优缺点七 . 使用环境和应用八 . 模式扩展一 . 模式动机使得请求发送者和接收者解耦,他们两个没有直接引用关系,发送请求的对象只需直到如何发送请求,不必知道如何完成请求。二 . 模式定义命令模式(Command Pattern):将一个请求分装为一个对象,从而使我们可用不同的请求对客户进行参数化;...原创 2020-04-02 16:07:15 · 248 阅读 · 0 评论 -
设计模式(十四)职责链模式
文章目录一 . 模式动机二 . 定义三 . 模式结构四 . 模式分析五 . 模式实例六 . 职责链模式优缺点七 . 适用环境和应用八 . 模式扩展一 . 模式动机假设你要去请假,先交给老师,但请假时间太久,老师无法处理,需要院长批准,你又去找院长,院长也无法处理,要校长批准,你又去找校长。这样就变得非常麻烦因为每一级都需要你去,所以我们请假通常就是交给老师,老师不能批准的假条由老师交给院长,...原创 2020-04-02 16:04:00 · 123 阅读 · 0 评论 -
设计模式(十三)代理模式
文章目录一 . 模式动机二 . 模式定义三 . 模式结构四 . 模式实例五 . 模式优缺点六 . 模式使用环境七 . 模式应用一 . 模式动机在某些情况下,客户不想或不能直接引用一个对象,此时可以通过一个称之为“代理”的第三者来实现间接引用,代理对象可以在客户端和目标之间起到中介作为,并且可以通过代理对象去掉客户不能看到的内容和服务或者添加客户需要的额外服务。二 . 模式定义代理模式...原创 2020-03-28 16:34:12 · 105 阅读 · 0 评论 -
设计模式(十二)享元模式
文章目录一 . 模式动机二 . 模式定义三 . 模式结构四 . 模式分析五 . 模式实例六 . 模式优缺点七 . 使用环境八 . 模式扩展一 . 模式动机面向对象技术可以很好的解决一个写灵活性或者扩展性问题,单在很多情况下需要在系统中增加类和对象的个数。当对象数量太多时,将导致运行代缴过高,带来性能下降。享元模式通过共享技术实现相同或相似对象的重用。享元模式中可以共享的相同内容成为内部状...原创 2020-03-28 16:31:49 · 190 阅读 · 0 评论 -
设计模式(十一)外观模式
文章目录一 . 模式动机二 . 模式定义三 . 模式结构三 . 模式分析四 . 模式实例五 . 模式优缺点六 . 适用场景七 . 模式应用八 . 模式扩展一 . 模式动机在系统比较复杂时,用户与系统之间的关系也会变得复杂,这时候我们可以适用一个外观角色,作为用户和子系统之间的一个角色,用户只需要与外观角色交互,用户与子系统之间的复杂关系由外观角色来实现。二 . 模式定义外观模式(Fa...原创 2020-03-28 16:28:48 · 240 阅读 · 1 评论 -
设计模式(十)装饰器模式
文章目录一 . 模式动机二 . 模式定义三 . 模式结构四 . 模式分析五 . 模式实例六 . 模式优缺点七 . 适用场景八 . 模式应用一 . 模式动机一般有两种方式可以给一个类或对象增加行为:继承:是给现有类增加功能的一种有效途径,这是静态的,因为用户不能控制增加行为的方式和时机。关联(组合):即将一个类嵌入另一个对象中,由另一个对象决定是否调用嵌入对象的行为以便扩展自己的行为,...原创 2020-03-25 21:16:09 · 101 阅读 · 0 评论 -
设计模式(九)组合模式
文章目录一 . 模式动机二 . 模式定义三 . 模式结构四 . 模式分析五 . 模式实例六 . 模式优缺点七 . 模式使用环境八 . 模式应用九 . 模式扩展一 . 模式动机对于树形结构的,客户端中必须区别对待容器(这里容器指树形结构中不是端点的节点)和叶子对象,而实际上大多数情况下客户端希望一致处理他们。二 . 模式定义组合模式(Composite Pattern):组合多个对象形...原创 2020-03-25 21:06:13 · 132 阅读 · 0 评论 -
设计模式(八)桥接模式
文章目录一 . 模式动机二 . 模式定义三 . 模式结构四 . 模式分析五 . 模式实例六 . 模式优缺点七 . 模式适用环境八 . 模式应用八 . 模式应用一 . 模式动机如果想要画带颜色的形状,比如想要绘制圆形,矩形,椭圆,正方状类,但绘制图性有红,绿,蓝等颜色现在有两种方式。第一种:全关联模式,就是全连接为每种不同颜色不同形状的图型创建对象。四种图像三种颜色,全关联要12种类第二...原创 2020-03-23 13:34:44 · 216 阅读 · 0 评论 -
设计模式(七)适配器模式
一 . 模式动机我们台式电脑的鼠标和键盘的接口并不是USB,但现在我们有一个USB接口的键盘,我们想在台上电脑上适用这个USB接口的键盘,就必须用到一个接口转换器,一边插USB键盘一边插电脑接口适配器模式就是为了应对这种情况,使那些不兼容的类可以一起工作二 . 定义适配器模式(Adapter Pattern):将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起...原创 2020-03-22 18:08:46 · 112 阅读 · 0 评论 -
设计模式(六)单例模式
一 . 模式动机在某些情况下,我们只需要一个对象实列,例如,window系统的任务管理器,你不论打开多少次,它都是同一个管理器对象,还有时间,系统系需要一个时间对象就够用。因此,我们就可以用单例模式来,设计一个类只能创建一个实例,无论你怎么搞,都只会是那一个实例。二 . 模式定义单例模式(Singleton Pattern):单例模式确保一个类只有一个实例,并且自行实例化并向整个系统...原创 2020-03-22 16:15:42 · 113 阅读 · 0 评论 -
设计模式(五)原型模式
一 . 模式动机在软件系统中,有些对象的创建过程比较复杂,而且需要频繁创建,消耗资源多,原型模式就是通过给出一个原型对象来指明要创建对象的类型,然后复制这个原型对象,创建更多这个类型的对象,就相当于给一个原物品,然后复制很多此物品,这样来降低创建多个同种复杂对象的资源。二 . 定义原型模式(Prototype Pattern):是一种对象型创建模式,用原型实列指定要克隆的对象的类型,通...原创 2020-03-20 17:38:29 · 208 阅读 · 0 评论 -
设计模式(四)建造者模式
一 . 模式动机汽车厂造汽车不会直接造一个完整的汽车,而是建造汽车零件,然后再将汽车零件组装起来,而用户直接看到的就是一个完整的汽车,由于组合过程很复杂,所以将组合这一个过程放到一个建造者对象中,建造者给用户的就是一个完整的组合好的对象,用户不需要知道怎么组合的。二 . 定义建造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不...原创 2020-03-19 16:00:23 · 186 阅读 · 0 评论 -
设计模式(三)抽象工厂模式
文章目录定义UML图和结构应用实例实列代码模式优缺点适用环境前言:上一篇工厂方法模式解决了简单工厂模式的开闭原则,这里的抽象工厂模式其实是基于工厂方法模式的,但是他的抽象产品与工厂方法模式不同,具体工厂创建对象也。我们往下看吧。定义抽象工厂模式,即Abstract Factory Pattern,提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类;具体的工厂负责实现具体的...原创 2020-03-15 20:25:04 · 151 阅读 · 0 评论 -
设计模式原则与分类
设计模式原则与分类文章目录设计模式原则与分类设计模式七大原则设计模式的分类设计模式七大原则开闭原则(OCP:Open Close Principle):(百度百科)在面向对象编程领域中,开闭原则规定“软件中的对象(类,模块,函数等等)应该对于扩展是开放的,但是对于修改是封闭的”,这意味着一个实体是允许在不改变它的源代码的前提下变更它的行为。该特性在产品化的环境中是特别有价值的,在这种环...原创 2020-03-15 19:06:44 · 208 阅读 · 0 评论 -
设计模式(二)工厂方法模式
设计模式(二)工厂方法模式前言工厂方法模式是在简单工厂模式的基础上,为了弥补简单工厂扩展性差的一种方法,即就是对于工厂也分为抽象工厂和具体工厂,具体工厂继承抽象工厂,并与一个具体产品相互对应,就是为每个具体产品写一个具体工厂。这样在扩展产品时候无需修改之前的代码,只需要写一个具体产品和一个具体工厂,满足了可扩展性的要求一 . 定义工厂方法模式(Factory Method Patte...原创 2020-03-15 14:56:09 · 302 阅读 · 0 评论 -
设计模式(一)简单工厂
设计模式(一)简单工厂模式一 . 定义简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式(同属于创建型模式的还有工厂方法模式,抽象工厂模式,单例模式,建造者模式)简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。二 . UML图和模式结构F...原创 2020-03-14 23:09:38 · 173 阅读 · 0 评论