设计模式的博客比较多,但好多为了表述的严谨性,理解起来让人有些疑惑。从本篇开始希望用自己粗浅简易的语言,来描述几种比较有困惑的设计模式在实际运用中的意义。
有两个基础类
publicclass DrawACircle{
public void draw(){
//画了个圈
};
}
publicclass DrawARectangle{
public void draw(){
//画了个方块
};
}
需求来了:画个红色的圈
容易想到的偷懒做法就是继承DrawACircle类,然后再描个红色的边,因此现在有这个类
publicclass DrawARedCircle extends DrawACircle{
@Override
public void draw(){
super.draw();
//然后再描个红色边
}
}
需求又来了:画个红色的方块
简单!上面的方法再来一遍。。。
需求叕来了:画个红色的叉
(#‵′)靠。。。。。好烦
因此从上面的例子可以看到,继承虽然可以很方便得复用父类的方法,但是如果是出现上述这种非常相近的工作,即使能通过复用来减少工作量,但随着需求的增加,导致代码膨胀的很快。所以在dalao们踩坑后发现了装饰器模式可以比较完美的解决这个问题。
简述意义:一种具体的装饰方式,可以反复地对不同的具体被装饰对象使用,大量减少重复劳动;同时,还能基于基础的装饰类,开发其他各种装饰方式,耦合性低。
具体例子可以看:菜鸟教程关于装饰器模式的具体例子