设计模式——可维护性篇

关于如何“创建类的新实例”的模式

工厂模式

目的:解决用户不想直接在client代码中指明要具体创建的实例,或不知道要创建哪个具体类的实例的问题
途径:定义一个用于创建对象的接口,让其子类来决定实例化哪一个类,从而使一个 类的实例化延迟到其子类

具体一点,新建工厂类,写新创建的方法,将客户端中创建新对象的功能委托给该工厂方法

抽象工厂模式

目的:创建一组相关/相互依赖的对象
途径:提供接口以创建一组相关/相互依赖的对象, 但不需要指明其具体类,具体的组合由这个接口决定

例子: 一个UI, 包含多个窗口控件,这些控件在不同的OS中实现不同
具体的构造方法基本同上

结构

代理模式

目的:某个对象比较“敏感”/“私密”/“贵重”,不希望被client直接访问 到
途径:设置proxy,在二者之间建立防火墙
在这里插入图片描述
结构如上图,代理的类里有真正的类,用户定义的时候创建的是代理类,只有当涉及到一些代价比较大的操作时,才会将该功能真正调用,这里用的是委托。

行为

observer模式

目的:一个类observer需要对另一个类subject的状态变化时刻掌握,类比粉丝和偶像
细节:observer类在构造器中声明自己的subject,,而后调用subject的注册方法,将自己加入subject的观察者列表中,同时observer类里有一个update方法供subject类回调,来通知subject的状态变化;subject类有观察者列表,同时有通知的方法,委托给observer类的update方法

visitor模式

目的:对特定类型的object的特定操作(visit),在运行时将 二者动态绑定到一起,该操作可以灵活更改,无需更改被visit的类
途径:为ADT预留一个将来可扩展功能的“接入点”,外部实现的功能代码 可以在不改变ADT本身的情况下通过delegation接入ADT
具体细节:ADT有一个accept方法,参数是visitor类,方法内就是将功能委托给visitor类,v.visit(this);visitor类有visit方法,对传入的对象进行操作

注:visitor模式是唯一一个双向委托的类!!!!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值