装饰者模式的小试验过程

今天在看数据库连接池的时候,里面讲到了装饰者模式的实现过程,个人第一次接触设计模式,所以将思路记录下来。

装饰者模式是什么?

装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。(来自百度)

在代码中怎么实现的?

首先,我们先写一个接口:

public interface Waiter {

    void service();
}

这个接口有一个service方法,接下来,我们通过一个类实现这个接口,这个类叫Waitress:

public class Waitress implements Waiter{
    @Override
    public void service() {
        System.out.println("在服务......");
    }
}

我们在service中打印出“在服务…”
那么现在我们有一个想法,就是当我们调用service这个方法的时候,不仅让它打印出在服务,还想让它打印出其它的东西,假设我们不知道Waitress这个类在哪里,那么我们就可以使用装饰者模式来实现这个需求。我们需要先创建一个新的类,名字叫做WaitressWrap:

public class WaitressWrap implements Waiter {

    Waiter watier1 = null;
    public WaitressWrap(Waiter watier) {

        this.watier1 = watier;//把接口Waiter中的watier,赋给现在这个类中新建的waiter1

    }

    @Override
    public void service() {
        System.out.println("微笑:::");
        watier1.service();
    }
}

在public的那段代码中,我们将接口Waiter中的watier,赋给现在这个类中新建的waiter1,现在当我们使用WaitressWrap中的service方法的时候,可以发现,我们将会先打印出“微笑:::”,然后再进行原有的service方法。
在测试页面中的代码:

public class MainTest {
    public static void main(String[] args){
        /*把Waitress传到WaitressWrap中,再调用waitressWrap中的service方法,而waitressWrap中的service方法
          在service前面,加了一个System.out.println();
         */
        WaitressWrap waitressWrap = new WaitressWrap(new Waitress());
        waitressWrap.service();
    }
}

运行结果如下所示:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值