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

    装饰模式


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

    person类:

    package com.hml.decorator;
    
    public class Person {
        private String name;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public void show() {
    
        }
    }

    衣服类

    package com.hml.decorator;
    
    public class Finery extends Person {
    
        protected Person component;
    
        public void decorate(Person component) {
            this.component = component;
        }
    
        public void show() {
            if (component != null) {
                component.show();
            }
        }
    
    }

    T袖类

    package com.hml.decorator;
    
    public class TShirts extends Finery {
    
        public void show() {
            System.out.println("T袖");
        }
    
    }

    大裤衩类:

    package com.hml.decorator;
    
    public class BigTrouser extends Finery {
    
        public void show() {
            System.out.println("大裤衩");
        }
    
    }

    接下来,我们就可以创建一个对象,然后用T袖装饰,在用大裤衩装饰。

    类图:

    装饰模式的特点


    装饰模式是为已有功能动态的添加更多的功能的一种方式,把类中的装饰功能从类中搬移去除,这样可以简化原有的类。

  • 相关阅读:
    c#之字符串,列表,接口,队列,栈,多态
    c#之函数
    KMP算法
    字符串Hash
    洛谷P1807 最长路_NOI导刊2010提高(07)
    洛谷P2863 [USACO06JAN]牛的舞会The Cow Prom
    洛谷P2071 座位安排
    二分图最大匹配,匈牙利算法
    差分约束系统
    搜索
  • 原文地址:https://www.cnblogs.com/heml/p/4620509.html
Copyright © 2011-2022 走看看