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();
        }
    }
  • 相关阅读:
    树链剖分学习笔记(未完)
    VI 配置文件(略全)
    linux之awk
    指针之基础篇
    linux之sed
    sqlplus命令手册
    Leetcode复习: 堆和栈
    leetcode 的shell部分4道题整理
    Regular Expression Matching [leetcode]
    深入浅出JAVA
  • 原文地址:https://www.cnblogs.com/littlehoom/p/5339413.html
Copyright © 2011-2022 走看看