软件构造复习笔记七

1.创建型模式(Creational patterns)

*工厂方法模式(Factory Method pattern)
当client不知道要创建哪个具体类的实例,或者不想再client代码中指明要具体创建的实例时,用工厂方法。

工厂模式:将创建一个对象的方法委托给另一个类(工厂类)来实现

Client用工厂方法来创建实例,得到的实例类型是抽象接口而非具体类
 

静态工厂方法(在工厂方法前加static):既可以在ADT内部实现,也可以单独创建工厂类

该设计模式是OCP(扩展/开放原则)的一个体现。

优点:实现信息隐藏

缺点:需要额外创建工厂类,程序更复杂

2.结构型模式

适配器模式(Adapter)

将某个类/接口转换为client期望的其他形式(主要解决接口不匹配问题)

通过增加一个接口,将已存在的子类封装起来,client面向接口编程,从而隐藏了具体子类

装饰器模式(Decorator)

对一个类的功能进行扩充(实现特性的组合)

装饰器在运行时组合特性;继承在编译时组合特性

3.行为型模式

*策略模式(Strategy)

使用功能的时候不访问功能实现,访问接口(在多个功能间灵活切换)

考试时一般要做的:1. 抽象出一个接口类 2. 调用接口

*模板模式(Template Method)
共性的操作步骤在抽象类中公共实现,差异化的步骤在各个子类中实现

使用继承和重写来实现模板模式

模板模式在框架中应用广泛

抽象类中有一些方法用final来修饰,这些方法即为模板方法

迭代器(Iterator)

将集合类的迭代操作委托给迭代器来实现。

让自己的集合类实现 Iterable 接口,并实现自己的独特 Iterator 迭代器 (hasNext, next, remove) ,允许客户端利用这个迭代器进行显式或隐式的迭代遍历:

*Visitor模式
把类中的某些功能委托给别人实现(实现功能时要反过来用到原来的类)

Visitor vs Iterator

迭代器:以遍历的方式访问集合数据而无需暴露其内部表示,将“遍历”这项功能delegate到外部的iterator对象。

Visitor:在特定ADT上执行某种特定操作,但该操作不在ADT内部实现,而是delegate到独立的visitor对象,客户端可灵活扩展/改变visitor的操作算法,而不影响ADT

迭代器和Vistor模式结构相同,只是方法不同(本质上无区别)
 

Strategy vs visitor

 

自己的独特 Iterator 迭代器 (hasNext, next, remove) ,允许客户端利用这个迭代器进行显式或隐式的迭代遍历:

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值