千家信息网

Java装饰器模式实例分析

发表于:2024-11-27 作者:千家信息网编辑
千家信息网最后更新 2024年11月27日,今天小编给大家分享一下Java装饰器模式实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了
千家信息网最后更新 2024年11月27日Java装饰器模式实例分析

今天小编给大家分享一下Java装饰器模式实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

优点

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;/** * 起床实现类 */@Slf4jpublic class GetUpLive implements Live {    @Override    public void live() {        log.info("起床了");    }}

3、睡觉的实现类

package com.asurplus.common.decorator;import lombok.extern.slf4j.Slf4j;/** * 睡觉实现类 */@Slf4jpublic class SleepLive implements Live {    @Override    public void live() {        log.info("睡觉了");    }}

4、装饰器类

package com.asurplus.common.decorator;import lombok.extern.slf4j.Slf4j;/** * 装饰器类 */@Slf4jpublic 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.decorator;/** * 装饰器模式 */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();    }}

输出结果

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

以上就是"Java装饰器模式实例分析"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。

0