黑马程序员技术交流社区
标题: 【济南校区】浅谈设计模式-装饰者设计模式2 [打印本页]
作者: 小鲁哥哥 时间: 2018-1-17 19:42
标题: 【济南校区】浅谈设计模式-装饰者设计模式2
【济南校区】装饰者模式2
上一次我们简单的和大家聊了聊装饰者模式,相信大家对装饰者模式有了一个简单的认识,个人对他的理解就是优化了继承的模式,使之不止局限于继承,更能更好的去扩展它本身的一个功能。
像上一次我们举例的代码那样,如果只有一个ConcreteComponent类而没有抽象的Component类,那么Decorator类可以使ConcreteComponent的一个字类。同样的,如果只有一个ConcreteDecorator类,那么就没有必要建立一个单独的Decorator类,而可以把Decorator和ConcreteDecorator的责任合并成一个类。
因此,我们就可以对上一次的代码进行一个优化处理,我们就没有必要有Component类了,我们可以直接让Decorator继承ConcreteComponent即可,具体代码如下:
/**
* 实现类
*/
public class ConcreteComponent {
public ConcreteComponent(){
}
private String name;
public ConcreteComponent(String name){
this.name = name;
}
public void show(){
System.out.print("输出为0");
}
}
class Decorator extends ConcreteComponent{
protected ConcreteComponent con;
public void play(ConcreteComponent con){
this.con = con;
}
@Override
public void show() {
if(con != null){
con.show();
}
}
}
/**
* 根据不同的需求具体的实现类
*/
class ConcreteDecorator extends Decorator{
@Override
public void show() {
System.out.print("输出当前方法");
super.show();
}
}
这样是不是显得代码更加简洁,好了,装饰者模式我们就讲到这里了,大家对它优点可以总结一下,我给大家总结一下他的一些优势。
1. 把类中装饰功能从类中搬移出去,这样就可以简化原有类。
2. 有效的把类的核心职责和装饰功能区分开了,而且可以去除相关类中的重复装饰逻辑。
如果你想了解更多黑马课程,如果你想加入黑马这个大家庭学习先进技术,光交天下好友,那就快来吧!
黑马程序员济南中心联系电话:0531-55696830
作者: 零度☆黎明 时间: 2018-1-27 00:33
棒棒哒 ............
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |