zoukankan      html  css  js  c++  java
  • 装饰模式

    个人博客

    http://www.milovetingting.cn

    装饰模式

    模式介绍

    装饰模式也称为包装模式,结构型设计模式之一,其使用一种对客户端透明的方式来动态地扩展对象的功能,同时它也是继承关系的一种替代方案之一。

    模式定义

    动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式生成子类更为灵活。

    使用场景

    需要透明且动态地扩展类的功能时。

    简单使用

    定义Component

    public abstract class Component {
    
    	public abstract void operate();
    
    }
    

    定义具体的Component

    public class ConcreteComponent extends Component {
    
    	@Override
    	public void operate() {
    		System.out.println("ConcreteComponent operate");
    	}
    
    }
    

    定义Decorator

    public abstract class Decorator extends Component {
    
    	private Component component;
    
    	public Decorator(Component component) {
    		super();
    		this.component = component;
    	}
    
    	@Override
    	public void operate() {
    		component.operate();
    	}
    
    }
    

    定义具体的Decorator

    public class ConcreteDecorator extends Decorator {
    
    	public ConcreteDecorator(Component component) {
    		super(component);
    	}
    
    	@Override
    	public void operate() {
    		operateA();
    		super.operate();
    		operateB();
    	}
    
    	public void operateA() {
    		System.out.println("operateA");
    	}
    
    	public void operateB() {
    		System.out.println("operateB");
    	}
    
    }
    

    调用

    public class Main {
    
    	public static void main(String[] args) {
    		Component component = new ConcreteComponent();
    		Decorator decorator = new ConcreteDecorator(component);
    		decorator.operate();
    	}
    
    }
    

    输出结果

    operateA
    ConcreteComponent operate
    operateB
    
  • 相关阅读:
    Docker 安装NGINX
    Ant 使用setFieldsValue更新Form表单值
    SpringSecurity设置角色和权限
    java 获取昨天、今天、明天的时间
    Ubuntu 20.04 root ssh登录配置
    http: server gave HTTP response to HTTPS client解决方案:
    06-多线程笔记-2-锁-3-Lock
    05-多线程笔记-2-锁-2-Synchronized
    04-多线程笔记-2-锁-1-死锁
    volatile
  • 原文地址:https://www.cnblogs.com/milovetingting/p/12329519.html
Copyright © 2011-2022 走看看