zoukankan      html  css  js  c++  java
  • 装饰器模式(think in java中的设计模式)

    装饰器模式:

      这种模式的用作在于加工本质,对本质进行一些“美化”。就像给咖啡加上牛奶,糖球,泡沫,巧克力一般。一般情况下会使用带有顶级父类的参数构造器来进行对顶级父类加工。要谨记一件事情就是他只能明显工作于最后一层。他是对于java中实现混型的一种手法。相对于接口组合实现混型来说这种实现方式使用代码量更加少。

    下面是实现的代码:

    public class B {
        public static void main(String[] args) {
            TimeStamped t=new TimeStamped(new Basices());
            TimeStamped t2=new TimeStamped(new SerialNumbered(new Basices()));
            TimeStamped t3=new TimeStamped(new TimeStamped(new Basices()));
            SerialNumbered s=new SerialNumbered(new Basices());
            SerialNumbered s2=new SerialNumbered(new TimeStamped(new Basices()));
            SerialNumbered s3=new SerialNumbered(new SerialNumbered(new Basices()));
        }
    }
    class Basices {
        private String value;
    
        public String getValue() {
            return value;
        }
    
        public void setValue(String value) {
            this.value = value;
        }
    }
    
    class Decorator extends Basices{
        protected Basices basic;
        public Decorator(Basices Basices){
            this.basic=Basices;
        }
        
        public String getValue() {
            return basic.getValue();
        }
    
        public void setValue(String value) {
            basic.setValue(value);
        }
    }
    
    class TimeStamped extends Decorator{
        private final long timeStamp;
        public TimeStamped(Basices Basices) {
            super(Basices);
            timeStamp=new Date().getTime();
            // TODO Auto-generated constructor stub
        }
        public long getTimeStamp() {
            return timeStamp;
        }
    }
    
    class SerialNumbered extends Decorator{
        private static long counter=1;
        private final long SerialNumber=counter++;
        public SerialNumbered(Basices Basices) {
            super(Basices);
            // TODO Auto-generated constructor stub
        }
        public long getSerialNumber() {
            return SerialNumber;
        }
    }
  • 相关阅读:
    bzoj3196 Tyvj 1730 二逼平衡树
    bzoj2929 [Poi1999]洞穴攀行
    bzoj2325 [ZJOI2011]道馆之战
    cf413E Maze 2D
    bzoj2599 [IOI2011]Race
    bzoj1528 [POI2005]sam-Toy Cars
    UVA 796 Critical Links(无向图求桥)
    UVA 315 Network(无向图求割点)
    HDU 1269 迷宫城堡(求是否只有一个强连通分量)
    HDU 3974 Assign the task
  • 原文地址:https://www.cnblogs.com/blackdeng/p/7374279.html
Copyright © 2011-2022 走看看