设计模式 六月 03, 2021

责任链模式

文章字数 9.7k 阅读约需 9 mins.

避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。

职责链上的处理者负责处理请求,客户只需要将请求发送到职责链上即可,...

查看全文

设计模式 六月 03, 2021

装饰器模式

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

为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀。

动态地给一个对象添加一些额外的职责, 通过创建一个包装对象,也就是装饰来包裹真实的对象。

  • 抽象组件角色(Component):定义一个对象接口,以规范准备接受附加责任的对象,即可以给这些对象动态地添加职责。

  • 具体组件角色(ConcreteComponent) :被装饰者,定义一个将要被装饰增加功能的类。可以给这个类的对象添加一些职责

  • 抽象装饰器(Decorator):维持一个指向构件Component...

查看全文

设计模式 六月 03, 2021

适配器模式

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

在软件系统中,常常要将一些”现存的对象”放到新的环境中,而新环境要求的接口是现对象不能满足的。

把一个类的接口变换成客户端所期待的另一种接口, Adapter模式使原本因接口不匹配(或者不兼容)而无法在一起工作的两个类能够在一起工作.

  • 目标角色(Target):— 定义Client使用的与特定领域相关的接口。
  • 客户角色(Client):与符合Target接口的对象协同。
  • 被适配角色(Adaptee):定义一个已经存在并已经使用的接口,这个接口需要适配。
  • 适配器角色(Adapter) :适...
查看全文

设计模式 六月 03, 2021

迭代器模式

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

提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。

把在元素之间游走的责任交给迭代器,而不是聚合对象。

  • 抽象迭代器(Iterator): 迭代器定义访问和遍历元素的接口。
  • 具体迭代器(ConcreteIterator): 具体迭代器实现迭代器Iterator接口。对该聚合遍历时跟踪当前位置。
  • 抽象聚合类(Aggregate): 聚合定义创建相应迭代器对象的接口。
  • 具体聚合类(ConcreteAggregate): 体聚合实现创建相应迭代器的接口,该操作返回ConcreteIterato...
查看全文

设计模式 六月 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...

查看全文
加载更多
0%