装饰模式

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.装饰功能可以累加
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • (转载)原文地址 在阎宏博士的《JAVA与模式》一书中开头是这样描述装饰(Decorator)模式的: 装饰模式又...
    zjk_00阅读 3,813评论 0 2
  • 0x01 前言   装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变...
    菩提树下成魔阅读 3,122评论 0 0
  • 1 概述 在一个项目中,你会有非常多的因素考虑不到,特别是业务的变更,不时的冒出一个需求是很正常的情况。有三个继承...
    今晚打肉山阅读 2,656评论 0 0
  • 一、模式动机 一般有两种方式可以实现给一个类或对象增加行为: 继承机制,使用继承机制是给现有类添加功能的一种有效途...
    端木轩阅读 3,483评论 0 0
  • 从准备秋招到现在已经过去差不多3个月了,今年6月份我就开始准备简历,学习一些基本的面试技巧,那个时候我天真地以为在...
    五五的小天空阅读 4,419评论 0 5

友情链接更多精彩内容