黑马程序员技术交流社区

标题: 【济南校区】浅谈设计模式-装饰者设计模式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