装饰(Decorator)模式可以在不修改对象外观和功能的情况下添加或者删除对象功能

试题(35)、(36)

某系统中的文本显示类(TextView)和图片显示类(PictureView)都继承了组件类(Component),分别显示文本和图片内容,现需要构造带有滚动条或者带有黑色边框,或者既有滚动条又有黑色边框的文本显示控件和图片显示控件,但希望最多只增加3个类。那么采用设计模式____(35)可实现该需求,其优点是____(36)。

(35)A. 外观 B. 单体 C. 装饰 D. 模板方法

(36)A. 比静态继承具有更大的灵活性 B. 提高已有功能的重复使用性 C. 可以将接口与实现相分离 D. 为复杂系统提供了简单接口

试题(35)、(36)分析

装饰(Decorator)模式可以在不修改对象外观和功能的情况下添加或者删除对象功能。它可以使一种对客户端来说是透明的方法来修改对象的功能,也就是使用初始类的子类实例对初始对象进行授权。装饰模式还为对象动态地添加了额外的重任,这样就在不使用静态继承的情况下,为修改对象功能提供了灵活的选择。

在以下情况中,应该使用装饰模式:

  • 想要在单个对象中动态并且透明地添加责任,而这样并不会影响其他对象;

  • 想要在以后可能要修改的对象中添加责任;

  • 当无法通过静态子类化实现扩展时。

参考答案

(35)C (36)A

相关推荐
muddjsv1 天前
软件工程:职业全景与前景深度解析
软件工程
明洞日记1 天前
【图解软考八股034】深入解析 UML:识别标准建模图示
c++·软件工程·软考·uml·面向对象·架构设计
muddjsv1 天前
软件工程编程语言学习:从入门到工程化的路线与建议
软件工程
宇钶宇夕2 天前
CoDeSys入门实战一起学习(二十八):(ST)三台电机顺起逆停程序详解
运维·学习·自动化·软件工程
学嵌入式的小杨同学2 天前
【Linux 封神之路】进程进阶实战:fork/vfork/exec 函数族 + 作业实现(含僵尸进程解决方案)
linux·开发语言·vscode·嵌入式硬件·vim·软件工程·ux
加密狗复制模拟2 天前
破解加密狗时间限制介绍
安全·软件工程·个人开发
muddjsv2 天前
软件工程核心课程学习规划表(按时间递进)
软件工程
明洞日记3 天前
【软考每日一练030】软件维护:逆向工程与再工程的区别与联系
c++·软件工程·软考·逆向工程
明洞日记3 天前
【软考每日一练026】软件工程深度解析:软件开发方法学的分类与应用实战
c++·ai·系统架构·软件工程·软考
喜欢吃豆3 天前
Ralph 架构深度解析报告:自主代理循环与软件工程的确定性重构
人工智能·重构·架构·大模型·软件工程