zoukankan      html  css  js  c++  java
  • java 装饰者模式

    IPerson:

    /**
     * @author com.tiantian
     * @version 创建时间:2012-11-20 下午3:43:04
     */
    public interface IPerson {
        public void canDo();
    }

    Person:

    /**
     * @author com.tiantian
     * @version 创建时间:2012-11-20 下午3:44:04
     */
    public class Person implements IPerson{
    
        @Override
        public void canDo() {
            System.out.println("I can code");
        }
    }

    Decorator(所有Person装饰者的父类):

    /**
     * @author com.tiantian
     * @version 创建时间:2012-11-20 下午3:44:55
     */
    public class Decorator implements IPerson{
        private IPerson person;
        public Decorator(IPerson person) {
            this.person = person;
        }
    
        @Override
        public void canDo() {
            person.canDo();
        }
    }

    DecoratorSwim(Swim装饰--为Peron添加“Swim”功能):

    /**
     * @author com.tiantian
     * @version 创建时间:2012-11-20 下午3:48:54
     */
    public class DecoratorSwim extends Decorator{
    
        public DecoratorSwim(IPerson person) {
            super(person);
        }
        
        @Override
        public void canDo() {
            super.canDo();
            System.out.println("I also can swim");
        }
    }

    DecoratorDraw(Draw装饰--为Peron添加“Draw”功能):

    /**
     * @author com.tiantian
     * @version 创建时间:2012-11-20 下午3:47:29
     */
    public class DecoratorDraw extends Decorator{
    
        public DecoratorDraw(IPerson person) {
            super(person);
        }
        @Override
        public void canDo() {
            super.canDo();
            System.out.println("I also can draw");
        }
    }

    Test:

    /**
     * @author com.tiantian
     * @version 创建时间:2012-11-20 下午3:49:35
     */
    public class Test {
        public static void main(String[] args) {
            Decorator decorator = new DecoratorDraw(new DecoratorSwim(new Person()));
            decorator.canDo();
        }
    }
  • 相关阅读:
    BZOJ 2038 小Z的袜子 莫队算法
    POJ 3407 球面距离
    POJ 1375 圆的切线
    BZOJ 1502 月下柠檬树 simpson积分
    UVA 11704
    POJ 1981 定长圆覆盖最多点
    HDU 3982 半平面交+圆和凸多边形面积并
    ZOJ 1104 二分
    使用Singleton来实现Flash和Flex的通信。
    校内API相关
  • 原文地址:https://www.cnblogs.com/tiantianbyconan/p/2779194.html
Copyright © 2011-2022 走看看