A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

【济南校区】装饰者模式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

2 个回复

倒序浏览
棒棒哒 ............
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马