1 课程讲解
1.1 类型
1.2 定义
1.3 应用场景
1.4 优点
1.5 缺点
1.6 关联设计模式
1.7 其他知识点
1 课程讲解
1.1 类型
结构型
1.2 定义
◆定义:在不改变原有对象的基础之上,将功能附加到对象上
提供了比继承更有弹性的替代方案(扩展原有对象功能)
比如说:我买蛋糕的时候加草莓还是芒果,我烧饼加火腿,鱼豆腐还是鸡蛋
1.3 应用场景
◆扩展一个类的功能或给一个类添加附加职责
◆动态的给一个对象添加功能,这些功能可以再动态的撤销
1.4 优点
◆继承的有力补充,比继承灵活,不改变原有对象的情况下给一个对象扩展功能
◆通过使用不同装饰类以及这些装饰类的排列组合,可以实现不同效果
◆符合开闭原则
1.5 缺点
◆会出现更多的代码,更多的类,增加程序复杂性
◆动态装饰时,多层装饰时会更复杂
1.6 关联设计模式
◆装饰者模式和代理模式:
a 装饰者模式关注动态的添加方法,代理模式关注于控制对对象的访问,
b 代理模式中的代理类可以对它的客户隐藏一个对象的具体信息,通常在使用代理模式的时候常常在代理类中创建一个对象的实例,装饰者模式通常把原始对象作为一个参数传入装饰者的构造器,这是使用上的不同。
◆装饰者模式和适配器模式
两者都是包装者模式,前者装饰者是原始对象的子类,后者适配器和原始对象有不同的接口
1.7 其他知识点
装饰者本身也实现了继承,继承是扩展形式之一,不见得能达到弹性设计的最佳方式,
装饰者模式做的,是把类中的装饰功能从类中移出去,简化了原来被装饰的类,同时把类的核心功能和类的装饰功能区分开,还可以去除不同类中重复的装饰逻辑
诸葛