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

  • 相关阅读:
    【.Net】鼠标点击控制鼠标活动范围 ClipCursor
    【设计模式】工厂模式 Factory Pattern
    sublime text3 关闭更新提醒
    Mac下Sublime Text3激活码
    测试开发(1) -- 整数反转
    测试开发工程师面试资料(未完)
    Mojave使用pyenv安装python-zlib错误
    清理 Xcode 10
    mitmproxy
    卸载CocoaPods
  • 原文地址:https://www.cnblogs.com/android-deli/p/10322229.html
Copyright © 2011-2022 走看看