zoukankan      html  css  js  c++  java
  • 装饰模式(设计模式_06)

    装饰模式,可以动态给对象增加一些额外的职责,比子类更加灵活,通常使用继承来实现扩展性,继承的子类越来越多,会增加复杂性,装饰模式的特点是:装饰者与被装饰者拥有共同的超类,继承的目的是继承类型。

    以下用一个案例来实现装饰模式:

    // 定义装饰接口
    public interface IDecoration {
    
        // 定义显示show装饰的方法
        public void show();
    
    }
    
    // 定义装饰者
    public abstract class Decoration implements IDecoration {
    
        private IDecoration iDecoration;
    
        public Decoration(IDecoration iDecoration) {
            this.iDecoration = iDecoration;
        }
    
        public void show() {
            iDecoration.show();
        }
    
    }
    
    // 定义第一个被装饰者,装饰者会很多很多
    public class DecorationA extends Decoration{
    
        public DecorationA(IDecoration iDecoration) {
            super(iDecoration);
            // TODO Auto-generated constructor stub
        }
    
        public void show() {
            super.show();
            System.out.println("DecorationA show()...");
        }
    }
    
    // 定义第二个被装饰者
    public class DecorationB extends Decoration{
    
        public DecorationB(IDecoration iDecoration) {
            super(iDecoration);
            // TODO Auto-generated constructor stub
        }
    
        public void show() {
            super.show();
            System.out.println("DecorationB show()...");
        }
    
    }
    
    // 定义一个人,直接实现 被装饰者的 共同超类
    public class Person implements IDecoration{
    
        public void show() {
            System.out.println("Person show()...");
        }
    
    }
    
    // 客户端程序
    public class Main {
    
        public static void main(String [] args) {
    
    
            // 会发现这里的写法,和IO有很相似
            Decoration decoration = new DecorationA(
                                                    new DecorationB(
                                                                    new Person() 
                                                                                ));
    
            decoration.show();
    
        }
    
    }

    运行结果:
    这里写图片描述

    装饰模式的好处:有装饰者与被装饰者有共同的超类

    谢谢大家的观看,更多精彩技术博客,会不断的更新,请大家访问,
    刘德利CSDN博客, http://blog.csdn.net/u011967006

  • 相关阅读:
    【算法】Kruskal算法(解决最小生成树问题) 含代码实现
    POJ 1182 食物链 (并查集解法)(详细注释)
    APICloud关闭Key Building Resolve
    ubuntu配置国内源
    缓存穿透、缓存击穿、缓存雪崩概念及解决方案
    POST请求和GET请求的区别
    ibatis 中#和 $ 符号的区别
    自动装箱和自动拆箱理解
    回文串算法说明(带注释)
    Object 对象有哪些方法?
  • 原文地址:https://www.cnblogs.com/android-deli/p/10322229.html
Copyright © 2011-2022 走看看