设计模式——可复用性篇

结构

适配器模式

目的:将某个类/接口转换为client期望的其他形式
途径:通过增加一个接口,将已存在的子类封装起来,client面向接口编程,从而隐藏了具体子类

具体来讲,方法参数列表不符,用接口封装,将接口的参数列表调整为用户想要的,在接口中转换,将计算的功能还是委托给原来的方法

装饰器模式

目的:为普通对象增加不同侧面的特性
途径:对每一个特性构造子类,通过委派机制增加到对象上

在这里插入图片描述
如上图,接口下的两个子类分别是普通类和装饰接口,装饰接口属性中有普通类,将普通操作委托给普通类,同时增加新的侧面特性功能
用户的用法:客户端需要一 个具有多种特性的object,通过一层一层的装饰来实现(可以这样实现的原因是每个类的结构器都是最初的接口类型)

跟继承的对比:装饰器是在运行的过程中动态组合的,而继承是静态检查的;装饰器是可以动态组合的,而继承的功能是单一的确定的

外观模式(门面模式)

目的: 客户端需要通过一个简化的接口来访问复杂系统内的功能 ,便于客户端学习使用,解耦
途径:提供一个统一的接口来取代一系列小接口调用,相当于对复杂 系统做了一个封装,简化客户端使用

行为

策略模式

目的:解决client根据需要要求动态切换算法,而不是写死在代码里
途径:为不同的实现算 法构造抽象接口,利用delegation,运行时动态传入client倾向的算法 类实例
例子:比如说排序,在不同的情况下需要选择不同的方法,但排序出来的结果是一致的
在这里插入图片描述

模板模式

目的:解决做事情的步骤一样,但具体方法不同的问题
途径:共性的步骤在抽象类内公共实现,差 异化的步骤在各个子类中实现,使用了继承和重写,模板模式属于白盒应用

迭代器模式

目的:客户端希望遍历被放入容器/集合类的一组ADT对象,无需关心容器的具体类型 ,也就是说,不管对象被放进哪里,都应该提供同样的遍历方式
途径:实现Iterable接口,并实现独特Iterator迭代器(hasNext, next, remove),允许客户端利用这 个迭代器进行显式或隐式的迭代遍历
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值