你可能喜欢
多项选择题
A.对客户屏蔽子系统组件,减少了客户处理的对象数目并使得子系统使用起来更加容易
B.通过引入外观模式,客户代码将变得很简单,与之关联的对象也很少
C.实现了子系统与客户之间的松耦合关系,这使得子系统的组件变化不会影响到调用它的客户类,只需要调整外观类即可
D.降低了大型软件系统中的编译依赖性,并简化了系统在不同平台之间的移植过程,因为编译一个子系统一般不需要编译所有其他的子系统
E.不能很好地限制客户使用子系统类
F.增加新的子系统可能需要修改外观类或客户端的源代码,违背了“开闭原则”
多项选择题
A.可以通过一种动态的方式来扩展一个对象的功能,通过配置文件可以在运行时选择不同的装饰器,从而实现不同的行为
B.可以使用多个具体装饰类来装饰同一对象,得到功能更为强大的对象
C.具体构件类与具体装饰类可以独立变化,用户可以根据需要增加新的具体构件类和具体装饰类,在使用时再对其进行组合,原有代码无须改变,符合“开闭原则”
D.使用装饰模式进行系统设计时将产生很多小对象
E.装饰模式比继承更加易于出错,排错也很困难,对于多次装饰的对象,调试时寻找错误可能需要逐级排查,较为烦琐
单项选择题
A.装饰某个对象时需要修改该类的对象
B.在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责
C.需要动态地给一个对象增加功能,这些功能也可以动态地被撤销
D.当不能采用继承的方式对系统进行扩充或者采用继承不利于系统扩展和维护时
E.只需要对某个对象进行外观修饰而不需要修改其内在属性时
多项选择题
A.分离抽象接口及其实现部分
B.桥接模式提高了系统的可扩充性,在两个变化维度中任意扩展一个维度,都不需要修改原有系统
C.实现细节对客户透明,可以对用户隐藏实现细节
D.桥接模式的引入会增加系统的理解与设计难度
E.桥接模式要求正确识别出系统中两个独立变化的维度,因此其使用范围具有一定的局限性
多项选择题
A.分步骤构建一个复杂的对象
B.应对“复杂对象各个部分”的频繁需求变动
C.用户使用不同的具体建造者即可得到不同的产品对象
D.如果产品的内部变化复杂,可能会导致需要定义很多具体建造者类来实现这种变化,导致系统变得很庞大
E.如果产品之间的差异性很大,则不适合使用建造者模式,因此其使用范围受到一定的限制
多项选择题
A.模式名称
B.问题
C.目的
D.解决方案
E.效果
F.实例代码
G.相关设计模式