装饰模式
动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。
装饰模式是为已有功能动态地添加更多功能的一种方式。
装饰模式把每个要装饰的功能放在单独的类中,并让这个类包含它所要装饰的对象,因此,当需要执行特殊行为时,客户代码就可以在运行时根据需要有选择地,按顺序地使用装饰功能包装对象了。
装饰模式的优点是:
1.把类中的装饰功能从类中搬移去除,这样可以简化原有的类。
2.有效地把类的核心职责和装饰功能区分开了。而且可以去除相关类中重复的装饰逻辑。
还是让代码来体现装饰模式的好处吧。
V1.0版 简单地给人搭配一下服饰
如果需要增加“超人”装扮,就得修改Person类,违背了开放-封闭原则
V2.0版本
服饰类与人类分离了,如果添加“超人”装扮则只需要添加类就可以了,但是在客户端需要一条一条地显示,我们应该在内部组装完毕,然后再显示出来。
建造者模式:建造过程必须是稳定的,而现在我们的例子,建造过程是不稳定的,也就是说,通过服饰组合出一个有个性的人完全可以有无数种方案,并非固定的
V1.3 主要是服饰类改变