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();
        }
    }
  • 相关阅读:
    java 06 作业代码
    java 06 abstract 抽象类
    java 06 重写(覆盖) final 内部类
    java 06 重写和final
    java 06 继承
    java 05 this static构造函数
    java 05 构造函数-构造代码块
    java 05 heap satck 堆和栈
    java 05 成员变量和成员函数-封装
    BJFU-207-基于顺序存储结构的图书信息表的逆序存储
  • 原文地址:https://www.cnblogs.com/littlehoom/p/5339413.html
Copyright © 2011-2022 走看看