一、装饰模式
1、装饰模式包含的4个角色:(1)抽象构件,定义对象的接口;(2)具体构件,定义了具体的构件对象;(3)抽象装饰类(核心);(4)具体装饰类,它是抽象装饰类的子类。
2、装饰模式适用的范围:(1)在不影响其它对象的情况下,以动态、透明的方式给单个对象添加职责;(2)需要动态地给一个对象增加功能,这些功能也能被动态撤销;(3)当不能采用继承的方式对系统进行扩充或者采用继承不利于系统扩展和维护时。
3、实例讲解:
题目:某图书管理系统中,书籍类(Book)具有借书方法borrowBook()方法和还书方法returnBook()。现在需要动态给该书籍对象添加冻结方法freeze()和遗失方法lose()。使用装饰模式设计该系统。绘制类图并编程实现。
1、装饰模式实验。
(1)通过分析实验内容,该实例类图如图1所示。
图1 装饰模式图书系统实例类图
(2)创建抽象构件类IBook,其中声明了borrowBook()和void returnBook()方法,这两个方法是具体构件类和装饰器类共有的。代码如下:
public interface IBook {
void borrowBook();
void returnBook();
}
(3)创建具体构件类Book,该类提供了borrowBook()和void returnBook()方