软件构造笔记(6):设计模式

本文详细介绍了设计模式中的工厂方法、适配器、装饰器、策略和模板模式,阐述了它们的核心理念和应用场景。工厂方法允许延迟类的实例化,适配器解决了接口不兼容问题,装饰器用于动态增加对象功能,策略模式通过委托实现不同条件下的任务执行,而模板模式则定义了一组步骤的抽象实现,子类可自定义具体步骤。这些模式在软件设计中扮演着重要角色,提高了代码的灵活性和可维护性。
摘要由CSDN通过智能技术生成

工厂方法模式(虚拟构造器)

  •  client无需知道应该创建哪个具体类的实例
  • 定义一个创建对象的接口,让接口的子类型决定实例化哪一个类,延迟类的实例化
  • 还可以根据向工厂方法传入的参数决定实例化的类
  • 不足:每增加一种类的实现就要修改工厂方法或者增加工厂类

适配器模式

  • 解决类之间接口不兼容的问题:增加一个接口,封装已有子类
  • 适配器可以通过继承或者委托实现

装饰器模式(我说今年必考,重点!)

  • 解决的问题:为对象增加不同方面的特性
  • 对每一个特性构造子类,通过委托增加到对象上
  • Decorator抽象类是所有装饰类的基类,component指向被装饰的对象(由原始类TextView实现)
  • 装饰类方法的实现:(一种可能)
public void Draw(){
super.Draw();
/* add some new features */
}

 装饰类特性组合:

VisualComponent v = new TextView();
VisualComponent c = new ScrollDecorator(new BorderDecorator(v) )

一层一层加盖式构造(这时我们应该体会到同名方法调用super的妙处了)

策略模式

  • 通过委托机制,在不同条件下用不同的方法实现同一个任务

模板模式

  • 一样的步骤,不一样的实现
  • 共性步骤在抽象类中公共实现,差异化步骤在各个子类实现
  • 使用继承和重写实现模板模式
  • 应用:框架
  • 举例:
    public void DoRead(){
    Open();//how?
    
    Save();
    
    Close();
    }
    
    

    访问者模式:

  • 对特定类型对象的特定操作visit,本质上将数据和作用于数据的特点接口分离开
  • 为ADT预留一个可扩展点,外部实现功能可以在不改变ADT的情况下通过委托接入
  • 在ConcreteVisitor中决定做何种行为
  • 使用visitor:
    int accept(Visitor visitor){
    visitor.visit(this);
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值