哈工大软件构造-设计模式小结

设计模式小结

装饰器(decorater)模式

装饰器模式是为应对子类拥有不同特性集合,为提高复用性为设计的模式。其可简单理解为穿衣服,我们将每个特性做成衣服,几件套在一起就满足了子类对特性的要求。
装饰器模式delegation结构如下:
在这里插入图片描述
类的介绍

  1. iterface IStack():其余所有类的父类
  2. class Stack implements IStack():实现子类中的公有方法
  3. class StackDecorater impiements IStack():在其构造方法delegation一个Stack,用以实现通用方法。
  4. class UndoDecorater extends StackDecorater impiements IStack():实现某一种特性,其中构造方法中delegation一个IStack,用来接收其他特性。

注:此模式构造出的子类如果以父类型接受,则只能调用父类型的方法。可以在父类型中定义子类中的特殊方法,但在Stack中不予以实现。

状态模式

当包含状态转换关系时,将状态功能delegation到外部,这样添加新状态时不需要更改已有代码
在这里插入图片描述
注:在具体的状态子类ConcreteStateA中,可实现唯一的状态

static ConcreteStateA a instance=new ConcreteStateA();

调用此状态时用ConcreteStateA.instance;

备忘录模式(Memento)

此模式用来实现ctrl+z(回滚)的功能
在这里插入图片描述
类的介绍

  1. Caretaker:维持一个Mementod类的list,并实现addMemento和getMemento(int i)功能
  2. Originator:维持state,并实现由当前state创建新Mementod,及更改当前状态的功能
  3. Mementod:保存一个状态

Visitor

(18,19都考过)
visitor模式为已完成的类提供,在不改变已有代码的前提下,通过新建类的方式,为已有类添加新功能
在这里插入图片描述
注:具体实现通过在已有类中留下此方法,利用双向deligation完成功能

public Object accept(Visitor v){
		return v.visitor(this);
}

(静态)工厂方法

当client不知道要创建哪个类的具体实现,或不想client代码中不想指明创建实例的类名,用静态工厂方法。
在这里插入图片描述

备忘录模式

Proxy

Proxy模式是为了应对当某接口的实现类不想直接给用户时使用时,我们新建一个接口的实例,并delegation到RealSubject
在这里插入图片描述

适配器(Adapter)

与Proxy形式类似,当某个已实现类不适用于当前输入时,我们将此类封装,拥有适合输入的参数,并在内部delegation

策略模式(Strategy)

策略模式用来为客户端提供多种选择,将选择策略delegation到外部接口,然后由客户端创建需要的子类并作为参数传入
当然,如果想避免类的名字暴露,可以采用静态工厂的方法。
在这里插入图片描述

模板模式(Template)

此模式是为了实现固定一系列方法的调用顺序。
模板模式与前几个不同之处在于,它与delegation无关,只是单纯的继承关系。一个抽象类与多种实现类。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值