单选题
下面给出了4种设计模式的作用。
门面(Facade):为子系统中的一组功能调用提供一个一致的接口,这个接口使得这个子系统更加容易使用。
装饰器(Decorator):当不能采用生成子类的方法进行扩充时,动态地给一个对象添加一些额外的功能。
单例(Singleton):保证一个类仅有一个实例,并提供一个访问它的全局访问点。
模板方法(Template Method):在方法中定义算法的框架,而将算法中的一些操作步骤延迟到子类中实现。
请根据下面叙述的场景选用适当的设计模式。若某面向对象系统中的某些类有且只有一个实例,那么采用______设计模式能够有效达到该目的;该系统中的某子模块需要为其他模块提供访问不同数据库系统(Oracle、SQL Server、DB2 UDB等)的功能,这些数据库系统提供的访间接口有一定的差异,但访问过程却都是相同的。例如,先连接数据库,再打开数据库,最后对数据进行查询,______设计模式可抽象出相同的数据库访问过程;系统中的文本显示类(TextView)和图片显示类(PictureView)都继承了组件类(Component),分别显示文本和图片内容。现需要构造带有滚动条,或者带有黑色边框,或者既有滚动条又有黑色边框的文本显示控件和图片显示控件,但希望最多只增加3个类,______设计模式可以实现该目的。
【正确答案】
C
【答案解析】单例模式保证一个类仅有一个实例,并提供一个访问它的全局访问点。第1空的题目中讲“某些类有且仅有一个实例”,所以选择C答案。模板方法是指在方法中定义算法的框架,而将算法中的一些操作步骤延迟到子类中实现。第2空的数据库连接、打开、查询这些是所有数据库系统操作的步骤,只是访问方式有所不同,在算法框架里没必要事先摆出来,可以放到各个子类中讨论,所以选择D答案。装饰器是当不能采用生成子类的方法进行扩充时,动态地给一个对象添加一些额外的功能。第3空是“构造带有……”,动态地给一些对象添加额外的功能,所以选择B答案。