装饰模式
首先这个是分成3个级别,person基类,finery次基类,tshirt子类,bigtrouser子类
关键在于次基类把基类作为字段,并且用decoreate方法person做参数给次基类类做赋值
都有show方法,次基类重写了show方法,调用基类对象的show方法,
在整个对象链中,子类循环调用子类的show方法,先执行自己的特殊语句在执行base.show。并且通过decoreate方法来得到子类对象的变化。
最后链头在person基类上,循环结束。
中介者模式
一个中介者,联合国
两个国家,美国和伊拉克
中介者有两个属性,美国和伊拉克,并且有一个declare方法参数mes,和college。里面又是colle的getmessage方法,并且是差错调用,有coll1调用coll2,有coll2调用coll1.
其中国家中有联合国这个字段。有declare方法,参数是mes,里面是联合国对象,加message和这个本类对象。
客户端调用的时候
创建联合国对象,然后创建美国,和伊拉克,
赋值属性美国和伊拉克,
美国调用declare方法产生mes,方法内部其实属性联合国的declare方法,其中有调用了伊拉克的getmes方法,这样呀就达到了,美国的消息传到了,通过伊拉克的getmase方法输出了。
指责链模式
Handler是一个基类,这个类中有handler success这个字段,并且可以通过外部赋值。
其中的Handlerequest方法中有判断,一程运行下一层通过success在次调用handlerequst这样通过复制不同的的success可以通过再次调用handlerrequest来达到职责连的效果。
每一个不同的子类,通过success方法上面的的新的方法,来区别每个类创建的意义。功能
命令模式
将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作
拿书上的例子打比方,一个barbecuer烤肉串者,有两个方法
一个命令类bakecommand,其中有字段barbecuer并且excutecommand调用的是barbecuer.bakemutton方法或者bakechickenwing方法。
服务员类waiter
其中有一个字段comand,赋值给command其中的notify方法就是调用的command.excutecommand.
其实就是一个类把另外一个类作为字段,然后自己的方法调用一个类的方法,然后又添加一个类,这个类以上一个类做字段,继续调用。
最后声明服务员类,调用notify方法。其实就是调用的烤肉者的某一个方法,区别或者关键点在于,底层类有很多方法,其中中间的类只有一个方法,换句话来说就是中间类只调用了底层类的某一个方法。