面向复用的设计模式概述

Adapter(适配器模式)

作用:1.将某个类/接口转换为client期望的其他形式 ,解决类之间接口不兼容的问题
2.通过增加一个接口,将已存在 的子类封装起来,client面向接口编程,从而隐藏了具体子类。
(加个“适配器”以便于复用)
使用适配器模式时,一般是采用委托机制,因为继承过多的话会导致结构过于复杂。

适配器类实现客户端的抽象接口,并将数据进行处理之后传入被适配的类,也可以将被适配的类的数据处理后返回客户端。

Decorator(装饰器模式)

用每个子类实现不同的特性,如果有多个客户端需要不同的数个功能的组合,需要大量的代码重复,会产生组合爆炸。
装饰器模式的设计思想为对象增加不同侧面的特性,对每一个特性构造子类,通过委派机制增加到对象上。
对于多种委托,以递归的方式实现委托树,从而产生灵活的功能组合。

Decorator抽象类是所有装饰类的基类,里面包含的成员变量 component 指向了被装饰的对象。

客户端需要的多种功能依靠一层层装饰实现,递归组合的过程就像一层层穿衣服。

Facade(外观模式)

客户端需要通过一个简化的接口来访问复杂系统内的功能,因此外观模式提供一个统一的接口来取代一系列小接口调用,相当于对复杂系统做了一个封装,简化客户端使用。

作用:简化客户端使用 ,便于客户端学习使用,解耦

外观模式就类似于将一个复杂的软件上面套上一层壳,给外部的用户露出简单易用的整合过的功能。

Strategy(策略模式)

有多种不同的算法来实现同一个任务,但需要client根据需要动态切换算法,而不是写死在代码里。
策略模式为不同的实现算法构造抽象接口,利用delegation,运行时动态传入client倾向的算法类实例。

举个简单的例子,排序算法有很多种,对于原始数据顺序比较好和非常混乱时,不同的算法时间消耗差距很大,这时如果调用者能通过输入数据的不同情况,灵活的选择最合适的排序方法,就会大大节省时间,提高计算效率。采用策略模式就使客户端具备了切换算法的能力。

Template Method(模板模式)

做事情的步骤一样,但具体方法不同,共性的步骤在抽象类内公共实现,差异化的步骤在各个子类中实现。

模板模式中,父类规定了几种方法,然后不同的子类分别继承这个父类,以其作为模板,继承相同或添加改动变成自己的方法。

Iterator(迭代器模式)

为了以自己想要的方式遍历整个集合,JAVA提供了一个Iterator类接口,便于用户遍历某种类型。

不管对象被放进哪里,都应该提供同样的遍历方式

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值