• 设计模式之——装饰者模式


    装饰者模式

    一、什么是装饰者?

    装饰者模式允许向现有的对象添加新的功能,同时不改变其结构。

    属于结构型模式。

    创建了一个装饰类,用来包装原有的类,并在保持方法签名完整性的前提下,提供了额外的功能。

    二、装饰者的介绍

    1. 意图:

    动态地给一个对象添加一些额外的职责。

    2. 主要解决:

    一般情况下,我们想扩展一个类经常使用继承的方式实现,由于继承为类引入了静态特征,并且随着扩展功能的增多,子类会膨胀。

    3. 何时使用:

    在不想增加很多子类的情况下扩展类

    4. 使用场景:

    (1) 扩展一个类的功能;(2) 动态增加功能,动态撤销。

    三、code display

    现在画图形,可以画两种图形:1. 圆形; 2. 正方形

    //接口类
    public interface Shape {
    	void draw();
    }
    
    //圆形
    public class Circle implements Shape{
    
    	@Override
    	public void draw() {
    		System.out.println("Shape: Circle");
    	}
    
    }
    
    //正方形
    public class Rectangle implements Shape {
    
    	@Override
    	public void draw() {
    		System.out.println("Shape: Rectangle " );
    	}
    
    }
    

    现要求,画出来的图形要能够边框要能够有颜色

    首先创建一个装饰者类:

    //装饰者类
    public abstract class ShapeDecorator implements Shape {
    	
    	public Shape decoratedShape;
    	
    	public ShapeDecorator(Shape decoratedShape){
    		this.decoratedShape = decoratedShape;
    	}
    	
    	//装饰者类调用接口方法
    	public void draw(){
    		decoratedShape.draw();
    	}
    }
    
    //红色装饰者子类
    public class RedShapeDecorator extends ShapeDecorator{
    
    	/**
    	 * @param decoratedShape
    	 */
    	public RedShapeDecorator(Shape decoratedShape) {
    		super(decoratedShape);
    	}
    
    	@Override
    	public void draw() {
    		decoratedShape.draw();
    		setRedBorder(decoratedShape);
    	}
    	
    	public void setRedBorder(Shape decoratedShape){
    		System.out.println(" Border Color: Red ");
    	}
    
    }
    
    
  • 相关阅读:
    MIT python 第二课第四十分钟 取最小值的例子
    Python IDLE快捷键 汇总
    5、Hibernate的延迟加载
    4、Hibernate三种状态的讲解
    3、Hibernate实现简单的CRUD操作
    1、hibernate的简单配置
    2、hibernate的 save 保存失败的解决方法
    JavaWeb开发中关于分页的实现
    常见的网页布局二
    常见的网页布局一
  • 原文地址:https://www.cnblogs.com/lfdingye/p/11630479.html
Copyright © 2020-2023  润新知