装饰器模式(think in java中的设计模式)

本文介绍了装饰器模式的概念及其在Java中的应用。通过示例代码展示了如何利用装饰器模式为对象添加职责,而不改变其结构。装饰器模式允许行为的动态包装,是一种替代继承的有效方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

装饰器模式:

  这种模式的用作在于加工本质,对本质进行一些“美化”。就像给咖啡加上牛奶,糖球,泡沫,巧克力一般。一般情况下会使用带有顶级父类的参数构造器来进行对顶级父类加工。要谨记一件事情就是他只能明显工作于最后一层。他是对于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;
    }
}

 

转载于:https://www.cnblogs.com/blackdeng/p/7374279.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值