可复用设计模式(2)

结构性模式(structural patterns)

Adaptor(适配器模式)

将类的接口转换为客户端期望的另一个接口,对旧的不兼容组件进行包装,在新系统中使用旧的组件。
在这里插入图片描述

Decorator(装饰器模式)

问题:需要对对象进行任意或者动态的扩展组合
实现:实现一个通用接口作为要扩展的对象,将主要功能委托给基础对象,然后添加功能。并以递归的方式实现。
在这里插入图片描述
Decorator抽象类是所有装饰类的基类,里面包含的成员变量指向了被装饰的对象。
代码示例:

public interface IceCream
{
   void AddTopping();
}
public class PlainIceCream implements IceCream
{
   @Override
   public void AddTopping(){
    System.out.println("please add");
    }
 }
 public abstract class ToppingDecorator implements IceCream
 {
    protected IceCream input;
    public ToppingDecorator (IceCream i)
    {
        this.input = i;
    }
    public abstract void AddTopping();
 }

Facade(外观模式)

问题:调用者需要一个简化的接口来调用复杂系统的整体功能。
实现:提供更高层次的接口来使子系统易于使用。
在这里插入图片描述

行为类模式

策略模式(Strategy)

问题:针对特定任务存在多种算法,调用者需要根据上下文环境动态的选择和切换。
实现:定义一个算法的接口,每个算法用一个类来实现,客户端针对接口编写程序。
示例:
一个商场支付方式:
在这里插入图片描述
代码实现:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

模板模式(Template)

应用场景:做事情的步骤一样,但具体方法不同

解决方案:共性的步骤在抽象类内公共实现,差异化的步骤在各个子类中实现。

使用继承和重写模式(而strategy pattern使用委派方式)
在这里插入图片描述
示例:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

迭代器模式(Iteretor)

应用场景:用户需要统一的策略来获得一个容器内的所有元素,无论容器的种类

解决方法:使用本模式,用于迭代过程

使用结果:

a. 隐藏了内部container的基本实现

b. 通过使用统一的接口,支持多种遍历策略

c. 易于改变container的类型

d. 促进程序中各个部分的交互

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奇迹飞鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值