阅读笔记-大话设计模式-1

策略模式:

通过接口调用下级继承的方法

装饰模式:

意图: 动态地给一个对象添加一些额外的职责。就增加功能来说, Decorator模式相比生成子类更为灵活。该模式以对客户端透明的方式扩展对象的功能。

适用环境:

在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。处理那些可以撤消的职责。

当不能采用生成子类的方法进行扩充时。一种情况是,可能有大量独立的扩展,为支持每一种组合将产生大量的子类,使得子类数目呈爆炸性增长。另一种情况可能是因为类定义被隐藏,或 类定义不能用于生成子类。

参与者

1.Component(被装饰对象的基类):定义一个对象接口,可以给这些对象动态地添加职责。

2.ConcreteComponent(具体被装饰对象:定义一个对象,可以给这个对象添加一些职责。

3.Decorator(装饰者抽象类): 维持一个指向Component实例的引用,并定义一个与Component接口一致的接口。

4.ConcreteDecorator(具体装饰者):具体的装饰对象,给内部持有的具体被装饰对象,增加具体的职责。

 

装饰者模式将对象的实现和如何使用这个对象进行分离,每个装饰对象只专注于实现自身的功能,不需要关系如何被加入到对象调用链中。

如果只有一个ConcreteComponent类没有Component类那么Decorator可以作为ConcreteComponent的一个子类。同理如果只有一个ConcreteDecorator类可以没有必要建立一个单独的 Decorator类,可以与ConcreteDecorator的责任合并为一个类

原型模式:

原型模式使用深克隆或浅克隆(可以不用初始化对象),可以动态的获得一个类的状态

模板方法模式:

模板方法模式是把不变的行为移动到超类,去除子类中的重复代码,将子类与超类,可变与不可变行为分离,提供一个代码复用平台。

外观模式:

 

 

在程序设计初期,因对有意识的对两个不同的层分离,在开发系统中子系统往往因为不断重构而越来越复杂,提供简单接口Facade接口对外调用。是最常用的设计模式之一

观察者模式:

缺点是观察者依赖抽象观察者的updata()方法,在实际开发中有些服务往往实现此接口。可以用事件委派来实现。

事件委派:实现策略是使用对象对观察者进行封装,可采用反射机制,将封装后的对象注册到subjet集合中,调用更新来通知观察者进行更新(可根据反射在封装对象时传入指定执行的方法与参数)

public void invoke() throws Exception{

Method method=object.getClass().getMethod(this.getMethodName(),

this.getParamTypes());

if(null==method){

return;

}

method.invoke(this.getObject(), this.getParams());

}

状态模式(state):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类

状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化,如果这个判断内容很简单,那就没必要用状态模式了

 

状态模式将特定的状态相关的行为都放入一个对象中,由于与所有状态相关的代码都存于某个ConcertaState中,所以通过定义新的子类可以很容易的增加新的状态和转换[DP]。

状态模式把各种状态转移逻辑分布到state的子类之间,来减少相互间的依赖。

当一个对象的行为取决于他的状态,并且它必须在运行时刻根据状态改变他的行为时,可以考虑采用状态模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值