Java中常用的设计模式之装饰器模式详解

网友投稿 327 2022-08-25


Java中常用的设计模式之装饰器模式详解

目录优点缺点使用场景一http://、实现方式二、测试总结

优点

1.装饰类和被装饰类可以独立发展,不会相互耦合,装饰模式是继承的一个替代模式,装饰模式可以动态扩展一个实现类的功能。

缺点

2.多层装饰比较复杂。

使用场景

1.扩展一个类的功能。

2.动态增加功能,动态撤销。

一、实现方式

假设一个场景,我们房间每天起床都要刷牙, 睡觉也要刷牙,刷牙的动作就是一个装饰器的作用,这样更利于我们的口腔健康。接下来我们就看看具体的装饰器如何实现。

1、每天生活的接口

package com.asurplus.common.decorator;

/**

* 每天的生活接口

*/

public interface Live {

/**

* 每天需要做的事情

*/

void live();

}

2、起床的实现类

package com.asurplus.common.decorator;

import lombok.extern.slf4j.Slf4j;

/**

* 起床实现类

*/

@Slf4j

public class GetUpLive implements Live {

@Override

public void live() {

log.info("起床了");

}

}

3oyHczp、睡觉的实现类

package com.asurplus.common.decorator;

import lombok.extern.slf4j.Slf4j;

/**

* 睡觉实现类

*/

@Slf4j

public class SleepLive implements Live {

@Override

public void live() {

log.info("睡觉了");

}

}

4、装饰器类

pachttp://kage com.asurplus.common.decorator;

import lombok.extern.slf4j.Slf4j;

/**

* 装饰器类

*/

@Slf4j

public class LiveDecorator {

private Live live;

public LiveDecorator(Live live) {

this.live = live;

}

public void live() {

// 生活

live.live();

// 刷牙

brushTeeth();

}

private void brushTeeth() {

log.info("刷牙去咯");

}

}

二、测试

package com.asurplus.common.decoraoyHczptor;

/**

* 装饰器模式

*/

public class TestMain {

public static void main(String[] args) {

// 起床

LiveDecorator getUp = new LiveDecorator(new GetUpLive());

getUp.live();

System.out.println();

// 睡觉

LiveDecorator sleep = new LiveDecorator(new SleepLive());

sleep.live();

}

}

输出结果

可以看出,起床和睡觉,都刷了牙,从而实现了我们的装饰器模式。

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:《流畅的Python》读书笔记——Python文本和字节序列
下一篇:python将Linux下使用top命令获取的进程信息进行分析做可视化展示(linux top查看某进程)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~