zoukankan      html  css  js  c++  java
  • 第六章 装饰模式

    装饰模式将类的装饰功能从类中分离出来,只保留了类的核心职责,装饰逻辑(顺序)由调用者选择分配。

    /**
     * Created by hero on 16-3-30.
     */
    public abstract class Person {
        private String name;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Person() {
        }
    
        public Person(String name) {
            this.name = name;
        }
    
        public abstract void show();
    }
    /**
     * Created by hero on 16-3-30.
     */
    public class Finery extends Person {
        protected Person person;
    
        public void Decorate(Person person) {
            this.person = person;
        }
    
        @Override
        public void show() {
            if (this.person != null) {
                person.show();
            }
        }
    }
    /**
     * Created by hero on 16-3-30.
     */
    public class TShirt extends Finery {
        public void show() {
            super.show();
            System.out.println("T-shirt");
        }
    }
    /**
     * Created by hero on 16-3-30.
     */
    public class Trouser extends Finery {
        public void show() {
            super.show();
            System.out.println("Trouser");
        }
    }
    /**
     * Created by hero on 16-3-30.
     */
    public class ConcretePerson extends Person {
        public ConcretePerson(String name) {
            setName(name);
        }
    
        @Override
        public void show() {
            System.out.println(getName());
        }
    }
    public class Main {
    
        public static void main(String[] args) {
            ConcretePerson person = new ConcretePerson("小明");
            TShirt tShirt = new TShirt();
            Trouser trouser = new Trouser();
            tShirt.Decorate(person);
            trouser.Decorate(tShirt);
            trouser.show();
        }
    }
  • 相关阅读:
    mysql root密码重置
    fetch跨域问题
    HTML5触摸事件(touchstart、touchmove和touchend)
    react-router-dom
    清理网站缓存
    从零开始学java (标识符,关键字,基本数据类型)
    从零开始学java ( 初始java)
    入职一年心得
    guava 函数式编程三兄弟
    java读取各种类型文件
  • 原文地址:https://www.cnblogs.com/littlehoom/p/5339413.html
Copyright © 2011-2022 走看看