哈尔滨工业大学软件构造心得(六)

目录

设计模式

1. 创建型模式(Creational patterns)

2. 结构型模式(Structural patterns)

3. 行为型模式(Behavioral patterns)


设计模式

分为以下三类模式:创建型模式、结构型模式、行为型模式

1. 创建型模式(Creational patterns)

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

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

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

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

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

优点:实现信息隐藏

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

2. 结构型模式(Structural patterns)

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

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

2.2 装饰器模式(Decorator)
对一个类的功能进行扩充(实现特性的组合)

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

3. 行为型模式(Behavioral patterns)

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

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

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

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

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

3.3 迭代器(Iterator)

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

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

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

Visitor vs Iterator

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

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

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

Strategy vs visitor

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值