
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
学习掌握不同的软件开发设计模式能够让程序员适应更多的软件编程开发需求场景,下面我们就通过案例分析来简单了解一下,软件开发装饰器设计模式优缺点分析。
1、什么是装饰器模式?
装饰器模式:对现有类不改动结构的情况下为类添加新职责和功能的模式。
动态的扩展类的职责,装饰器模式是一种是比继承更加灵活的代码扩展模式。同时装饰类之间可以进行互相的嵌套
Component装饰接口:装饰接口定义了装饰的顶层抽象行为,一般定义被装饰者和装饰者的公用行为
ConrecteComponent被装饰类:主要为被装饰类实现,和装饰类相互独立,拥有单独的功能方法
Decorder装饰器:定义了装饰的通用接口,包含装饰器的通用方法
ConrecteDecorderA装饰器A:定义了装饰器的具体设计,可以包含自己的装饰方法
ConrecteDecorderB装饰器B:定义了装饰器的具体设计,可以包含自己的装饰方法
2、装饰器模式的特点
装饰者和被装饰者都需要实现相同的接口(必要条件)
装饰者一般需要继承一个抽象类,或者需要定义抽象的方法和实现
装饰者可以在所委托被装饰者的行为之前或之后,加上自己的行为,以达到特定的目的。
任何父类出现的地方都可以用子类进行替换,在活用继承的同时可以灵活的扩展。
3、什么时候使用装饰器模式
需要大量的子类为某一个对象进行职责增强的时候,可以使用装饰器模式
希望使用继承对于类进行动态扩展的时候,可以考虑使用装饰器模式
4、不使用设计模式的优缺点:
优点:
添加一个装饰者十分简单,只需要继承抽象父类接口,同时子类只需要通过方法传入被装饰者进行装饰。
缺点:
我们的调料父类如果增加抽象方法,所有的子类都需要改动,这是整个子类群体来说是毁灭性的,对于编写代码的程序员来说也是毁灭性的。
可以看到装饰者已经是一种面向实现编程的状态,如果我们换一种被装饰者,需要添加更多的装饰类进行装饰。并且这些装饰者是相互独立并且不能复用的
5、使用装饰器设计模式的优缺点:
优点:
装饰类的公用类不再需要设置抽象的方法,使得装饰实现子类也不在依赖抽象父类的抽象方法
既然装饰者和被装饰对象有相同的超类型,所以在任何需要原始对象(被包装的)的场合,就可以用装饰过的对象代替它。
装饰类和被装饰类的扩展和实现都是解耦的,不需要互相关注实现细节,装饰子类可以独自实现方法
我们解决了增加新的被装饰类之后导致装饰类大量膨胀的问题,现在可以进行简单的应用。
缺点:
本质上还是继承结构,而且装饰类和被装饰类必须有相同的顶级父类接口
装饰类在系统越来越复杂之后会出现明显的膨胀。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。