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

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

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

優(yōu)點(diǎn)

1.裝飾類(lèi)和被裝飾類(lèi)可以獨(dú)立發(fā)展,不會(huì)相互耦合,裝飾模式是繼承的一個(gè)替代模式,裝飾模式可以動(dòng)態(tài)擴(kuò)展一個(gè)實(shí)現(xiàn)類(lèi)的功能。

缺點(diǎn)

2.多層裝飾比較復(fù)雜。

使用場(chǎng)景

1.擴(kuò)展一個(gè)類(lèi)的功能。

2.動(dòng)態(tài)增加功能,動(dòng)態(tài)撤銷(xiāo)。

一、實(shí)現(xiàn)方式

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

1、每天生活的接口

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

2、起床的實(shí)現(xiàn)類(lèi)

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

3、睡覺(jué)的實(shí)現(xiàn)類(lèi)

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

4、裝飾器類(lèi)

package com.asurplus.common.decorator;
import lombok.extern.slf4j.Slf4j;
/**
 * 裝飾器類(lèi)
 */
@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("刷牙去咯");
    }
}

二、測(cè)試

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();
        // 睡覺(jué)
        LiveDecorator sleep = new LiveDecorator(new SleepLive());
        sleep.live();
    }
}

輸出結(jié)果

在這里插入圖片描述

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

總結(jié)

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

相關(guān)文章

  • Spring Boot2解決idea console 控制臺(tái)輸出亂碼的問(wèn)題

    Spring Boot2解決idea console 控制臺(tái)輸出亂碼的問(wèn)題

    這篇文章主要介紹了Spring Boot2解決idea console 控制臺(tái)輸出亂碼的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • java編寫(xiě)的文件管理器代碼分享

    java編寫(xiě)的文件管理器代碼分享

    本文給大家分享的是一則使用java編寫(xiě)的文件管理器的代碼,新人練手的作品,邏輯上還是有點(diǎn)小問(wèn)題,大家?guī)兔纯窗伞?/div> 2015-04-04
  • Java通過(guò) Socket 實(shí)現(xiàn) TCP服務(wù)端

    Java通過(guò) Socket 實(shí)現(xiàn) TCP服務(wù)端

    這篇文章主要介紹了Java通過(guò) Socket 實(shí)現(xiàn) TCP服務(wù)端的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • Spring @ComponentScan注解掃描組件原理

    Spring @ComponentScan注解掃描組件原理

    這篇文章主要介紹了Spring @ComponentScan自動(dòng)掃描組件使用,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-01-01
  • 最新評(píng)論