欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中常用的設(shè)計模式之裝飾器模式詳解

 更新時間:2022年02月27日 11:33:03   作者:Asurplus、  
這篇文章主要為大家詳細介紹了Java中常用的設(shè)計模式之裝飾器模式,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

優(yōu)點

1.裝飾類和被裝飾類可以獨立發(fā)展,不會相互耦合,裝飾模式是繼承的一個替代模式,裝飾模式可以動態(tài)擴展一個實現(xiàn)類的功能。

缺點

2.多層裝飾比較復雜。

使用場景

1.擴展一個類的功能。

2.動態(tài)增加功能,動態(tài)撤銷。

一、實現(xiàn)方式

假設(shè)一個場景,我們房間每天起床都要刷牙, 睡覺也要刷牙,刷牙的動作就是一個裝飾器的作用,這樣更利于我們的口腔健康。接下來我們就看看具體的裝飾器如何實現(xiàn)。

1、每天生活的接口

package com.asurplus.common.decorator;
/**
 * 每天的生活接口
 */
public interface Live {
    /**
     * 每天需要做的事情
     */
    void live();
}

2、起床的實現(xiàn)類

package com.asurplus.common.decorator;
import lombok.extern.slf4j.Slf4j;
/**
 * 起床實現(xiàn)類
 */
@Slf4j
public class GetUpLive implements Live {
    @Override
    public void live() {
        log.info("起床了");
    }
}

3、睡覺的實現(xiàn)類

package com.asurplus.common.decorator;
import lombok.extern.slf4j.Slf4j;
/**
 * 睡覺實現(xiàn)類
 */
@Slf4j
public class SleepLive implements Live {
    @Override
    public void live() {
        log.info("睡覺了");
    }
}

4、裝飾器類

package 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.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();
    }
}

輸出結(jié)果

在這里插入圖片描述

可以看出,起床和睡覺,都刷了牙,從而實現(xiàn)了我們的裝飾器模式。

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!  

相關(guān)文章

最新評論