chenhang 的博客

HansChen 的博客

马上订阅 chenhang 的博客 RSS 更新: http://blog.hanschen.site/atom.xml

设计模式之装饰模式

2017年3月9日 00:00

概述

装饰模式(Decorator)也叫包装器模式(Wrapper),是指动态地给一个对象添加一些额外的职责,就增加功能来说装饰模式比生成子类更为灵活。它通过创建一个包装对象,也就是装饰来包裹真实的对象

情景举例

我们先来分析这样一个画图形的需求:

  1. 它能绘制各种背景,如红色、蓝色、绿色
  2. 它能绘制形状,如三角形,正方形,圆形
  3. 它能给形状加上阴影

就先列这三个简单的需求吧,下面让我们比较下各种实现的优缺点

丑陋的实现

来看看我们用继承是如何实现的,首先,抽象出一个Shape接口我想大家都不会有意见的是不是?

1
2
3
4
5
6
7
8
9
10
/**
* @author HansChen
*/
public interface Shape {

/**
* 绘制图形
*/
void draw();
}

然后我们定义各种情况下的子类,结构如下,看到这么多的子类,是不是有点要爆炸的感觉?真是想想都可怕

剩余内容已隐藏

查看完整文章以阅读更多