装饰模式

2016-09-28  本文已影响0人  蝌蚪1573
Paste_Image.png

装饰步骤:
1.装饰类与被装饰类要实现同一个接口或继承同一个父类
2.在装饰类中持有一个被装饰引用
3.重写方法,进行功能增强。

Component:抽象构件 给出一个抽象接口,以规范准备接收附加责任的对象

代码实现:
public interface Component {    
            public void sampleOperation();
}

ConcreteComponent:具体构建 定义一个将要接收附加责任的类

public class ConcreteComponent implements Component {
        @Override
        public void sampleOperation() {
             // 写相关的业务代码
         }
}

Decorator:装饰角色 定义一个将要接收附加责任的类

public class Decorator implements Component{
        private Component component;
        public Decorator(Component component){
            this.component = component;
        }
        @Override
        public void sampleOperation() {
            // 委派给构件
            component.sampleOperation();
        }
}

ConcreateComponent:具体装饰 负责给构件对象“贴上”附加的责任

public class ConcreteDecoratorA extends Decorator {

        public ConcreteDecoratorA(Component component) {
            super(component);
        }
        @Override
        public void sampleOperation() {
     super.sampleOperation();
                // 写相关的业务代码
         }
}
优点 缺点
1.比静态继承更加的灵活 增加大量功能类似的小对象增加学习难度
2.增强原有功能的同时,接口一直不影响原有对象使用
3.装饰功能可以累加
上一篇 下一篇

猜你喜欢

热点阅读