问百度也不可能很清楚,最好是找本设计模式的书,并且Decorate设计模式并非java的。推荐书籍:GOF 《设计模式》 《设计模式解析》 《大话设计模式》 ----这个是中国人的,评价还可以 《Thinking in patterns》 《java与模式》想很快的了解可以去下载23个设计模式的电子书,还附示例代码,迅雷搜狗有。
首先谢谢给位哦,这是我的理解,大家看对不对! class AA { private BB bb; public AA(BB bb) { this.bb = bb; } }class BB { private CC cc; public BB(CC cc) { this.cc = cc; } }class CC { ... } public class DD { public static void main(String[] args) { AA aa = new AA(new BB(new cc)); //这里是不是算得上装饰模式! } }
动态地给一个对象添加一些额外的职责。就增加功能来说,Decorate 模式相比生成子类更为灵活。 在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。
处理那些可以撤消的职责。
当不能采用生成子类的方法进行扩充时。一种情况是,可能有大量独立的扩展,为支持每一种组合将产生大量的子类,使得子类数目呈爆炸性增长。另一种情况可能是因为类定义被隐藏,或类定义不能用于生成子类。 实质就是 Wrapper. 一层一层的封装。可以封装任意层。
(1) 装饰对象和真实对象有相同的接口。这样客户端对象就可以以和真实对象相同的方式和装饰对象交互。
(2) 装饰对象包含一个真实对象的索引(reference)
(3) 装饰对象接受所有的来自客户端的请求。它把这些请求转发给真实的对象。
(4) 装饰对象可以在转发这些请求以前或以后增加一些附加功能。这样就确保了在运行时,不用修改给定对象的结构就可以在外部增加附加的功能。在面向对象的设计中,通常是通过继承来实现对给定类的功能扩展。
楼主可以问一下baidu
类会多得吃不消的,呵呵。
《设计模式解析》
《大话设计模式》 ----这个是中国人的,评价还可以
《Thinking in patterns》
《java与模式》想很快的了解可以去下载23个设计模式的电子书,还附示例代码,迅雷搜狗有。
class AA
{
private BB bb;
public AA(BB bb)
{
this.bb = bb;
}
}class BB
{
private CC cc;
public BB(CC cc)
{
this.cc = cc;
}
}class CC
{
...
}
public class DD
{
public static void main(String[] args)
{
AA aa = new AA(new BB(new cc)); //这里是不是算得上装饰模式!
}
}