设计模式(三)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/iwuio/article/details/83832110

装饰模式

首先这个是分成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方法。其实就是调用的烤肉者的某一个方法,区别或者关键点在于,底层类有很多方法,其中中间的类只有一个方法,换句话来说就是中间类只调用了底层类的某一个方法。

猜你喜欢

转载自blog.csdn.net/iwuio/article/details/83832110