设计模式 六月 03, 2021

组合模式

文章字数 3.1k 阅读约需 3 mins.

树结构,多级树形菜单或文件和文件夹目录

将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。

  • 抽象构件角色(component):是...
查看全文

设计模式 六月 03, 2021

组合模式

文章字数 3.1k 阅读约需 3 mins.

树结构,多级树形菜单或文件和文件夹目录

将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。

  • 抽象构件角色(component):是组合中的对象声明接口,在适当的情况下,实现所有类共有接口的默认行为。声明一个接口用于访问和管理Component子部件。这个接口可以用来管理所有的子对象。(可选)在递归结构中定义一个接口,用于访问一个父部件,并在合适的情况下实现它。
  • 树叶构件角色(Leaf):在组合树中表示叶节点对象,叶节点没有子节...
查看全文

设计模式 六月 03, 2021

观察者模式

文章字数 4k 阅读约需 4 mins.

一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。

在抽象类里有一个 ArrayList 存放观察者们, 当对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

  • 目标(Subject): 目标知道它的观察者。可以有任意多个观察者观察同一个目标。 提供注册和删除观察者对象的接口。
  • 具体目标(ConcreteSubject): 将有关状态存入各ConcreteObserver对象。
  • 观察者(Observer): 为那些在目标发生改变时需获得通知的对象定义...
查看全文

设计模式 六月 03, 2021

桥接模式

文章字数 3.4k 阅读约需 3 mins.

在有多种可能会变化的情况下,用继承会造成类爆炸问题,扩展起来不灵活。

把这种多角度分类分离出来,让它们独立变化,减少它们之间耦合。

  • 抽象类(Abstraction):定义抽象类的接口,维护一个指向Implementor类型对象的指针
  • 扩充抽象类(RefinedAbstraction):扩充由Abstraction定义的接口
  • 实现类接口(Implementor):定义实现类的接口,该接口不一定要与 Abstraction的接口完全一致;事实上这两个接口可以完全不同。一般来讲, Implementor...
查看全文

设计模式 六月 03, 2021

工厂模式

文章字数 5.8k 阅读约需 5 mins.

轻松方便地构造对象实例,而不必关心构造对象实例的细节和复杂过程

​ 建立一个工厂来创建对象,用户调用工厂的创建对象方法.

  • 抽象工厂角色: 这是工厂方法模式的核心,它与应用程序无关。是具体工厂角色必须实现的接口或者必须继承的父类。在java中它由抽象类或者接口来实现。
  • 具体工厂角色:它含有和具体业务逻辑有关的代码。由应用程序调用以创建对应的具体产品的对象。
  • 抽象产品角色:它是具体产品继承的父类或者是实现的接口。在java中一般有抽象类或者接口来实现。
  • 具体产品角色:具体工厂角色所创建的对...
查看全文

设计模式 六月 03, 2021

模板方法模式

文章字数 3k 阅读约需 3 mins.

保证架构逻辑的正常执行,而不被子类破坏.

定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 T模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

  • 抽象类(AbstractClass): 定义抽象的原语操作(primitive operation) ,具体的子类将重定义它们以实现一个算法, 实现一个模板方法,定义一个算法的骨架。该模板方法不仅调用原语操作,也调用定义
  • 具体子类 (ConcreteClass): 实现原语操作以完成算法中与特定子类相关的步骤。
  • 一次...
查看全文

设计模式 六月 03, 2021

策略模式

文章字数 4.1k 阅读约需 4 mins.

算法和对象分开来,使得算法可以独立于使用它的客户

一系列的算法,把每一个算法封装起来, 并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。

  • 环境类(Context): 用一个ConcreteStrategy对象来配置。维护一个对Strategy对象的引用。可定义一个接口来让Strategy访问它的数据。

  • 抽象策略类(Strategy): 定义所有支持的算法的公共接口。 Context使用这个接口来调用某ConcreteStrategy定义的算法。

  • 具体策略类(ConcreteStrategy...

查看全文

设计模式 六月 03, 2021

状态模式

文章字数 4.7k 阅读约需 4 mins.

随着增加新的状态或者修改一个状体(if else(或switch case)语句的增多或者修改)可能会引起很大的修改,而程序的可读性,扩展性也会变得很弱。维护也会很麻烦。那么我就考虑只修改自身状态的模式。

允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。

一个对象的行为取决于一个或多个动态变化的属性 ,这样的属性叫做 状态 ,这样的对象叫做 有状态的 ( stateful ) 对象 ,这样的对象状态是从事先定义好的一系列值中取出的。当一个这样的对象与外部事件产生互动...

查看全文

设计模式 六月 03, 2021

代理模式

文章字数 6.5k 阅读约需 6 mins.

遇到一个“复杂的对象”的创建工作,该对象由一定各个部分的子对象用一定的算法构成,由于需求的变化,复杂对象的各个部分经常面临剧烈的变化,但将它们组合在一起的算法相对稳定。

提供一种“封装机制”来隔离“复杂对象的各个部”的变化,从而保持系统中的“稳定构建算法.

将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

  • 抽象建造者角色(Builder):为创建一个Product对象的各个部件指定抽象接口,以规范产品对象的各个组成成分的建造。一般而言,此角色规定要实现复杂对象的哪些...

查看全文

设计模式 六月 03, 2021

原型模式

文章字数 5.4k 阅读约需 5 mins.

当对象的构造函数非常复杂,在生成新对象的时候非常耗时间、耗资源的情况,怎么来创建.

通过复制(克隆、拷贝)一个指定类型的对象来创建更多同类型的对象。这个指定的对象可被称为“原型”对象,也就是通过复制原型对象来得到更多同类型的对象。

客户(Client)角色:使用原型对象的客户程序
抽象原型(Prototype)角色:规定了具体原型对象必须实现的接口(如果要提供深拷贝,则必须具有实现clone的规定)
具体原型(Concrete Prototype):从抽象原型派生而来,是客户程序使用的对象,即被复...

查看全文

设计模式 六月 03, 2021

中介者模式

文章字数 3.8k 阅读约需 3 mins.

面对一系列的相交互对象。怎么样保证使各对象不需要显式地相互引用,使其耦合松散.

用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。

  • 抽象中介者(Mediator):中介者定义一个接口用于与各同事(Colleague)对象通信。
  • 具体中介者(ConcreteMediator): 具体中介者通过协调各同事对象实现协作行为。了解并维护它的各个同事。
  • 抽象同事类(Colleague class): 定义同事类接口,定义各同事...
查看全文
加载更多
0%