装饰器模式

一个类,在不修改此类的情况下为此类添加其他的功能。
在别的博客看到的一个评论,侵删。
代理模式与装饰器模式的区别:
代理模式偏向于一个控制器,就是把被代理对象的控制权交给了代理对象,由代理对象决定被代理对象是否执行,如何执行
装饰模式偏向于一个和花瓶,只能在被装饰对象前后加入一点东西,并不会去阻止执行的

package com.lt.designpatterns;

/**
 * 自己手写一个装饰器模式
 */
public class DecoratorClient
{
    public static void main(String[] args)
    {
        System.out.println("最原始的功能:");
        Phone phone = new CallOnlyPhone();
        phone.use();

        System.out.println("加入装饰器之后:");
        Phone musicPhone = new MusicPhone(phone);
        musicPhone.use();
    }
}

/**
 * 电话
 */
interface Phone
{
    void use();
}

/**
 * 只能打电话
 */
class CallOnlyPhone implements Phone
{

    @Override
    public void use()
    {
        System.out.println("打电话");
    }
}

/**
 * 装饰器
 */
class Decorator implements Phone
{
    protected Phone phone;

    public Decorator(Phone phone)
    {
        this.phone = phone;
    }

    @Override
    public void use()
    {
        this.phone.use();
    }
}

/**
 * 添加播放器功能
 */
class MusicPhone extends Decorator
{
    public MusicPhone(Phone phone)
    {
        super(phone);
    }

    public void use()
    {
        System.out.println("加入音乐播放功能");
        this.phone.use();
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值