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

    装饰器模式

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


    1、创建一个抽象类

    1 public interface Shape {
    2     void draw();
    3 }
    Shape

    2、编写抽象类的实现类

    1 public class Circle implements Shape {
    2     @Override
    3     public void draw() {
    4         System.out.println("Circle");
    5     }
    6 }
    Circle
    1 public class Rectangle implements Shape {
    2     @Override
    3     public void draw() {
    4         System.out.println("Rectangle");
    5     }
    6 }
    Rectangle

    3、创建实现了 Shape 接口的抽象装饰类

     1 public abstract class ShapeDecorator  implements  Shape{
     2     protected Shape decoratedShape;
     3 
     4     public ShapeDecorator (Shape decoratedShape){
     5         this.decoratedShape = decoratedShape;
     6     }
     7 
     8     public void draw(){
     9         decoratedShape.draw();
    10     }
    11 }
    ShapeDecorator

    4、实现抽象装饰类

     1 public class ReadShapeDecorator extends  ShapeDecorator {
     2     public ReadShapeDecorator(Shape decoratedShape) {
     3         super(decoratedShape);
     4     }
     5     public  void draw(){
     6         decoratedShape.draw();
     7         setRedBorder(decoratedShape);
     8     }
     9 
    10     private void setRedBorder(Shape decoratedShape) {
    11         System.out.println("Border Color: Red");
    12     }
    13 
    14 }
    ReadShapeDecorator

    5、测试类

     1 public class DecoratorPatternDemo {
     2     public static void main(String[] args) {
     3         Shape circle = new Circle();
     4         ShapeDecorator readCircle = new ReadShapeDecorator(new Circle());
     5         ShapeDecorator redRectangle = new ReadShapeDecorator(new Rectangle());
     6         circle.draw();
     7         readCircle.draw();
     8         redRectangle.draw();
     9     }
    10 }
    DecoratorPatternDemo

    6、测试结果

    1 Circle
    2 Circle
    3 Border Color: Red
    4 Rectangle
    5 Border Color: Red
    View Code

     转载 :https://www.runoob.com/design-pattern/decorator-pattern.html

  • 相关阅读:
    创建桌面快捷方式
    令牌桶在数据通信QoS流量监管中的应用
    cocos2d-x 实现clash of clans多点聚焦缩放场景
    NotePad++ 快捷键中文说明
    2017第24周日
    《自信力~成为更好的自己》晨读笔记
    不知道如何决定的时候就快速决定
    《意外之外》晨读笔记
    《从“为什么”开始》听书笔记
    解决电脑上网问题记录
  • 原文地址:https://www.cnblogs.com/hoje/p/11933703.html
Copyright © 2011-2022 走看看