精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

工作中最常用的八種設(shè)計(jì)模式

開發(fā) 前端
今天結(jié)合我實(shí)際工作場景和源碼實(shí)例,跟大家一起聊聊工作中最常用的8種設(shè)計(jì)模式,希望對你會有所幫助。

前言

設(shè)計(jì)模式在我們?nèi)粘5能浖_發(fā)中無處不在,它們幫助我們編寫更易擴(kuò)展、更具可讀性的代碼。

今天結(jié)合我實(shí)際工作場景和源碼實(shí)例,跟大家一起聊聊工作中最常用的8種設(shè)計(jì)模式,希望對你會有所幫助。

1. 單例模式

單例模式確保一個類只有一個實(shí)例,通常用于管理共享資源,如配置、緩存、線程池等。

代碼實(shí)現(xiàn):雙重檢查鎖這是單例模式的標(biāo)準(zhǔn)寫法,既保證線程安全,又避免性能損耗。

public class Singleton {
    private static volatile Singleton instance;

    private Singleton() {}

    public static Singleton getInstance() {
        if (instance == null) {
            synchronized (Singleton.class) {
                if (instance == null) {
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }
}

JDK 中的應(yīng)用:

  • java.lang.Runtime.getRuntime()
  • java.util.logging.Logger

Spring 中的應(yīng)用:Spring 的 Bean 默認(rèn)是單例模式。可以通過 @Scope("prototype") 將其改為多例。

2. 工廠模式

工廠模式用于封裝對象的創(chuàng)建邏輯,特別是當(dāng)類實(shí)例化過程復(fù)雜時,可以降低耦合度。

代碼實(shí)現(xiàn):簡單工廠以支付系統(tǒng)為例,不同支付方式需要不同的對象。

public class PaymentFactory {
    public static Payment createPayment(String type) {
        switch (type) {
            case "AliPay":
                return new AliPay();
            case "WeChatPay":
                return new WeChatPay();
            default:
                throw new IllegalArgumentException("Unknown payment type");
        }
    }
}

JDK 中的應(yīng)用:

  • java.util.Calendar.getInstance()
  • javax.xml.parsers.DocumentBuilderFactory.newInstance()

Spring 中的應(yīng)用:

  • BeanFactory 和 ApplicationContext 都是工廠模式的體現(xiàn)。

3. 策略模式

策略模式將不同算法封裝為獨(dú)立類,并允許在運(yùn)行時選擇不同的策略。

代碼實(shí)現(xiàn):促銷策略以電商促銷為例,支持滿減、打折等多種策略。

public interface PromotionStrategy {
    void applyPromotion();
}

public class DiscountStrategy implements PromotionStrategy {
    @Override
    public void applyPromotion() {
        System.out.println("Applying discount...");
    }
}

public class PromotionContext {
    private PromotionStrategy strategy;

    public PromotionContext(PromotionStrategy strategy) {
        this.strategy = strategy;
    }

    public void executePromotion() {
        strategy.applyPromotion();
    }
}

JDK 中的應(yīng)用:

  • java.util.Comparator 是典型的策略模式。

Spring 中的應(yīng)用:

  • 事務(wù)管理(TransactionManager),支持編程式和聲明式事務(wù)。

4. 代理模式

代理模式通過代理對象控制對目標(biāo)對象的訪問,常用于權(quán)限控制、日志記錄等場景。

代碼實(shí)現(xiàn):靜態(tài)代理模擬對一個服務(wù)的權(quán)限控制。

public interface Service {
    void execute();
}

public class RealService implements Service {
    @Override
    public void execute() {
        System.out.println("Executing real service...");
    }
}

public class ServiceProxy implements Service {
    private RealService realService;

    @Override
    public void execute() {
        System.out.println("Checking permissions...");
        if (realService == null) {
            realService = new RealService();
        }
        realService.execute();
    }
}

JDK 中的應(yīng)用:

  • 動態(tài)代理 java.lang.reflect.Proxy
  • RMI(遠(yuǎn)程方法調(diào)用)

Spring 中的應(yīng)用:

  • AOP(面向切面編程)廣泛使用代理模式。

5. 觀察者模式

觀察者模式定義一對多的依賴,當(dāng)一個對象狀態(tài)變化時,所有依賴它的對象都會收到通知。

代碼實(shí)現(xiàn):事件通知模擬微博用戶的粉絲通知。

public interface Observer {
    void update(String message);
}

public class User implements Observer {
    private String name;

    public User(String name) {
        this.name = name;
    }

    @Override
    public void update(String message) {
        System.out.println(name + " received message: " + message);
    }
}

public class Weibo {
    private List<Observer> observers = new ArrayList<>();

    public void follow(Observer observer) {
        observers.add(observer);
    }

    public void post(String message) {
        for (Observer observer : observers) {
            observer.update(message);
        }
    }
}

JDK 中的應(yīng)用:

  • java.util.Observer 和 java.util.Observable
  • javax.swing.event.ChangeListener

Spring 中的應(yīng)用:

  • ApplicationEvent 和 ApplicationListener 是典型實(shí)現(xiàn)。

6. 裝飾器模式

裝飾器模式在不改變原始類的基礎(chǔ)上,動態(tài)擴(kuò)展其功能。

代碼實(shí)現(xiàn):咖啡加料模擬一個咖啡訂單系統(tǒng),可以動態(tài)加料。

public interface Coffee {
    String getDescription();
    double getCost();
}

public class SimpleCoffee implements Coffee {
    @Override
    public String getDescription() {
        return "Simple Coffee";
    }

    @Override
    public double getCost() {
        return 5.0;
    }
}

public class MilkDecorator implements Coffee {
    private Coffee coffee;

    public MilkDecorator(Coffee coffee) {
        this.coffee = coffee;
    }

    @Override
    public String getDescription() {
        return coffee.getDescription() + ", Milk";
    }

    @Override
    public double getCost() {
        return coffee.getCost() + 1.5;
    }
}

JDK 中的應(yīng)用:

  • java.io.BufferedInputStream 和 java.io.BufferedOutputStream

Spring 中的應(yīng)用:

  • BeanPostProcessor 用于動態(tài)修改 Bean 的行為。

7. 模板方法模式

模板方法模式定義一個算法的骨架,把具體的實(shí)現(xiàn)留給子類。

代碼實(shí)現(xiàn):任務(wù)執(zhí)行模板模擬定時任務(wù)的執(zhí)行流程。

public abstract class Task {
    public final void execute() {
        init();
        doWork();
        cleanup();
    }

    protected abstract void init();
    protected abstract void doWork();
    protected void cleanup() {
        System.out.println("Default cleanup...");
    }
}

public class DataProcessingTask extends Task {
    @Override
    protected void init() {
        System.out.println("Initializing data...");
    }

    @Override
    protected void doWork() {
        System.out.println("Processing data...");
    }
}

JDK 中的應(yīng)用:

  • java.util.AbstractList 和 java.util.AbstractMap

Spring 中的應(yīng)用:

  • JdbcTemplate 和 RestTemplate

8. 建造者模式

建造者模式用于創(chuàng)建復(fù)雜對象,特別是當(dāng)對象有多個可選參數(shù)時。

代碼實(shí)現(xiàn):構(gòu)建 HTTP 請求

public class HttpRequest {
    private String method;
    private String url;
    private String body;

    private HttpRequest(Builder builder) {
        this.method = builder.method;
        this.url = builder.url;
        this.body = builder.body;
    }

    public static class Builder {
        private String method;
        private String url;
        private String body;

        public Builder method(String method) {
            this.method = method;
            return this;
        }

        public Builder url(String url) {
            this.url = url;
            return this;
        }

        public Builder body(String body) {
            this.body = body;
            return this;
        }

        public HttpRequest build() {
            return new HttpRequest(this);
        }
    }
}

JDK 中的應(yīng)用:

  • StringBuilder
  • Stream.Builder

Spring 中的應(yīng)用:

  • UriComponentsBuilder 用于構(gòu)建 URI。

總結(jié)

這些設(shè)計(jì)模式不僅在日常開發(fā)中有著廣泛應(yīng)用,更在 JDK 和 Spring 中深度體現(xiàn)。

了解它們的本質(zhì)和應(yīng)用場景,能夠讓我們寫出更優(yōu)雅、更健壯的代碼。

下次再遇到類似問題時,希望你能得心應(yīng)手地選擇合適的模式!

責(zé)任編輯:武曉燕 來源: 蘇三說技術(shù)
相關(guān)推薦

2025-08-12 08:22:29

2025-11-10 02:11:00

2025-10-17 08:22:32

2025-11-18 08:22:56

2025-06-16 08:22:23

2024-03-18 08:22:15

OOM問題java線上問題

2024-10-14 08:39:29

工廠模式策略模式代碼

2024-05-09 08:19:09

OOMJVM內(nèi)存

2024-01-29 18:02:46

2021-10-27 17:57:35

設(shè)計(jì)模式場景

2021-04-18 21:07:32

門面模式設(shè)計(jì)

2025-04-25 07:10:00

GenAIAI工具人工智能

2021-04-14 09:02:22

模式 設(shè)計(jì)建造者

2022-06-16 11:01:22

數(shù)據(jù)庫SQL

2024-11-08 13:34:24

2022-02-17 11:03:33

數(shù)據(jù)庫基礎(chǔ)語法用法

2021-09-16 11:02:49

Python線程

2024-04-28 11:22:18

2021-08-11 17:22:11

設(shè)計(jì)模式單例

2017-10-30 13:34:22

深度學(xué)習(xí)KerasAPI
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

精品一区二区成人精品| 一区二区导航| 午夜av一区二区三区| 国内成+人亚洲| 国产一级片一区二区| 国产精品久久久久无码av| 亚洲精品在线观看网站| 狠狠热免费视频| 天堂亚洲精品| 国产色91在线| 成人看片视频| 日本成人一级片| 亚洲一级高清| xxxx性欧美| 日本黄色网址大全| 深夜福利一区| 欧美怡红院视频| 精品久久久久久久久久中文字幕| 精品三级久久久久久久电影聊斋| 国产精品羞羞答答xxdd| 国产99在线|中文| 欧美精品久久久久性色| 成人免费av| 日韩va亚洲va欧洲va国产| 尤物网站在线看| 精品三区视频| 红桃av永久久久| 佐佐木明希av| 国产美女性感在线观看懂色av| 国产成人av一区二区| 国产国语videosex另类| 日韩av黄色片| 好吊一区二区三区| 麻豆成人在线看| 美女网站视频色| 国产一区网站| 亚洲人午夜色婷婷| 国产毛片毛片毛片毛片毛片毛片| 成人污版视频| 在线播放中文一区| 午夜剧场在线免费观看| 欧美不卡高清一区二区三区| 粉嫩av一区二区三区免费野| 国产免费一区二区视频| 午夜小视频在线观看| 中文字幕一区不卡| 综合久久国产| 欧美三级电影一区二区三区| 国产婷婷一区二区| 青青草成人激情在线| 深夜福利在线视频| 99国产精品久| 久草热久草热线频97精品| 欧美天堂在线视频| 99国产欧美另类久久久精品| 国产精品中出一区二区三区| 丁香花免费高清完整在线播放 | 欧美精品久久久久久久久25p| 澳门成人av网| 在线观看一区二区视频| 久久久久久三级| 国产成人免费| 69av一区二区三区| 日本少妇xxx| 福利电影一区 | 国产高清视频在线观看| 欧美激情综合五月色丁香| 亚洲午夜精品一区二区| 免费黄网站在线| 亚洲精品欧美激情| 国产欧美日韩小视频| 国产传媒在线观看| 欧美在线短视频| 日本77777| 9l亚洲国产成人精品一区二三| 亚洲成av人乱码色午夜| 一本色道久久综合亚洲精品图片| 免费精品国产的网站免费观看| 国产一区二区成人| 丝袜美腿小色网| 日韩一区二区久久| 国产精品久久久久久久久免费看| 国产精品国产精品国产专区| 国产成+人+日韩+欧美+亚洲| 久久国产一区二区| 欧美精品电影| 午夜精品一区二区三区免费视频 | av动漫免费观看| 韩国日本一区| 欧美在线免费播放| 性生活在线视频| 三级小说欧洲区亚洲区| 中文字幕日韩在线观看| 欧美精品成人久久| 日韩精品一级二级 | 欧美激情一级欧美精品| 青青视频在线免费观看| 国产一区二区在线免费观看| 国产免费一区二区| 秋霞影院午夜丰满少妇在线视频| 亚洲综合色区另类av| 国产v亚洲v天堂无码久久久| 秋霞影院一区| 国产香蕉精品视频一区二区三区| 久久久精品国产sm调教网站| 爽爽淫人综合网网站| 91九色偷拍| av在线收看| 亚洲一区二区三区四区在线观看| 国内自拍视频网| 加勒比视频一区| 操人视频在线观看欧美| 潘金莲一级淫片aaaaaa播放| 成人一区在线看| 三级三级久久三级久久18| 大香伊人中文字幕精品| 欧美日韩国产免费一区二区| 黄色国产在线观看| 黑丝一区二区三区| 91综合免费在线| 国产在线视频你懂得| 五月激情综合色| 亚洲精品中文字幕乱码无线| 欧美特黄一级大片| 2019亚洲男人天堂| 亚洲精品网站在线| 亚洲三级在线观看| 在线能看的av网站| av永久不卡| 茄子视频成人在线| 成人免费视频国产免费麻豆| 91久色porny| 国产精品波多野结衣| 成人黄色免费网站| 一区二区三区无码高清视频| 二区视频在线观看| 久久免费偷拍视频| 99久久国产综合精品五月天喷水| 日韩精品三级| 欧美猛少妇色xxxxx| 国产又粗又猛又爽又黄91| 国产精品欧美精品| 亚洲欧美国产日韩综合| 精品国产午夜| 国产裸体写真av一区二区 | 亚洲第一成年人网站| 亚洲色图在线播放| 天堂av手机在线| 国产精品成人av| 成人深夜直播免费观看| 免费黄色网址在线观看| 欧美日韩www| 日本一级特级毛片视频| 经典三级在线一区| 国产盗摄视频在线观看| 日本精品国产| 欧美激情一二三| 亚洲欧美综合在线观看| 欧美日韩免费观看中文| 亚洲人成人无码网www国产| 久久久一二三| 一区二区三区不卡在线| 国产不卡精品在线| 欧美老女人xx| 网站黄在线观看| 91国内精品野花午夜精品| 亚洲日本精品视频| 久久99精品视频| 91精品国产毛片武则天| 欧美一区二区三区红桃小说| 欧美中文字幕在线播放| 自拍视频在线网| 91精品国产品国语在线不卡| 久久久久久久久久久久久久免费看| 国产成人免费在线视频| www.中文字幕在线| 成人中文视频| 99re6热在线精品视频播放速度| 丰满的护士2在线观看高清| 精品五月天久久| 亚洲一区二区影视| 亚洲免费电影在线| 水蜜桃av无码| 美腿丝袜亚洲三区| 国产毛片久久久久久国产毛片| 天堂一区二区三区四区| 国产精品久久久久久久久久尿 | 欧美人妖在线| 91性高湖久久久久久久久_久久99| 国内小视频在线看| 国产亚洲成精品久久| 国产美女自慰在线观看| 粉嫩av一区二区三区免费野| 91制片厂在线| 成人av资源站| 久久久精品高清| 国产一级一区二区| 日本xxxxx18| 蜜臀久久99精品久久一区二区| 成人羞羞国产免费| www.成人爱| 欧美黑人巨大xxx极品| 成人在线免费公开观看视频| 日韩欧美电影一区| 一区二区视频播放| 欧美日韩视频在线| 成人免费看片98| 国产精品成人在线观看| 中文字幕av网址| 国产成人99久久亚洲综合精品| 在线看的黄色网址| 久久www成人_看片免费不卡| 8x8ⅹ国产精品一区二区二区| 精品国产乱码久久久久久1区2匹| 国产高清在线精品一区二区三区| 亚洲青青一区| 国产精品成人免费视频| www.综合网.com| 久热精品视频在线免费观看| 国产在线视频福利| 日韩精品视频中文在线观看| 国产高清免费观看| 欧美丝袜丝交足nylons| 久久一区二区三区视频| 亚洲午夜在线视频| 亚洲国产美女视频| 国产精品久久久久久久午夜片 | 国产中文字幕一区二区三区| 成人片在线免费看| 欧美1区2区3| 成人有码在线播放| 亚洲欧洲二区| 91九色蝌蚪国产| 四虎国产精品免费久久5151| 国产精品极品美女粉嫩高清在线| 亚洲优女在线| 欧美亚洲另类制服自拍| 国内激情视频在线观看| 久久久久国产一区二区三区| 日韩精品亚洲人成在线观看| 久久不射热爱视频精品| a级影片在线| 精品中文字幕在线2019| 18网站在线观看| 久久99久久久久久久噜噜| 99自拍视频在线观看| www.日韩av.com| 免费观看在线午夜影视| www.国产精品一二区| www久久日com| 久久国内精品一国内精品| 国产在线高清理伦片a| 超碰91人人草人人干| 2021国产在线| 久久免费在线观看| 一个人看的www视频在线免费观看| 91大神福利视频在线| 国产精品一区二区av影院萌芽| 日韩免费在线看| 日韩精品一区二区三区av| 国产美女精品免费电影| 久久免费福利| 国产亚洲欧美一区二区三区| 少妇一区二区三区| 秋霞在线观看一区二区三区| 欧美成人直播| wwwjizzjizzcom| 性久久久久久| 国产精品区在线| 成人午夜电影网站| 亚洲第一成人网站| 欧美国产一区二区| 欧美日韩一级大片| 欧美性猛交视频| 在线视频你懂得| 精品久久久三级丝袜| 你懂的在线网址| 日韩专区在线播放| 69av成人| 国产日韩欧美在线播放| 影音先锋欧美激情| 日韩亚洲视频| 欧美激情第10页| 无码无遮挡又大又爽又黄的视频| 日本免费在线视频不卡一不卡二 | 94色蜜桃网一区二区三区| 亚洲精品午夜视频| 一区二区在线电影| 老熟妇一区二区三区| 日韩欧美一级精品久久| 激情视频在线观看免费| 久99九色视频在线观看| 亚洲第一影院| 丁香婷婷久久久综合精品国产 | 中文字幕亚洲综合| 金瓶狂野欧美性猛交xxxx | 中文字幕+乱码+中文| 亚洲韩国日本中文字幕| 日本免费在线观看| 日本欧美国产在线| 亚洲精品影片| 在线不卡日本| 久久精品伊人| 影音先锋资源av| 亚洲欧洲www| 精品国产青草久久久久96| 亚洲黄色免费三级| √天堂8在线网| 国产精品一区二区电影| 欧美美女啪啪| 免费在线看黄色片| 精品一区二区三区香蕉蜜桃| 亚洲自拍偷拍一区二区| 亚洲国产视频一区二区| 91亚洲欧美激情| 亚洲午夜未删减在线观看| 激情黄产视频在线免费观看| 91久久国产综合久久91精品网站 | 久久久久久亚洲精品美女| 天堂资源在线亚洲视频| 99精品视频免费| 亚洲欧美激情一区二区三区| 中文字幕日本不卡| 中文字幕永久在线视频| 亚洲深夜福利在线| 涩涩在线视频| 狠狠色综合网站久久久久久久| 欧美暴力喷水在线| 一二三级黄色片| 中文字幕制服丝袜成人av | 精品亚洲永久免费| 日韩一级片在线播放| 日韩成人影视| 国产日韩精品视频| 色无极亚洲影院| 最新天堂中文在线| 国产精品美女一区二区在线观看| 欧美特级黄色片| 中文在线不卡视频| 国产精品成人国产| 一本一生久久a久久精品综合蜜| 麻豆91精品视频| 免费成人美女女在线观看| 欧美探花视频资源| 在线观看免费黄视频| 成人夜晚看av| 午夜精品婷婷| 香蕉视频污视频| 五月婷婷另类国产| 秋霞av在线| 国产精品www网站| 久久免费大视频| 日本人dh亚洲人ⅹxx| 一区二区免费视频| 天天干天天舔天天射| 日韩美女免费线视频| 精品一区不卡| 天天操天天干天天做| 夜夜爽夜夜爽精品视频| 免费观看黄一级视频| 992tv成人免费视频| 免费成人高清在线视频theav| 亚洲黄色av网址| 伊人夜夜躁av伊人久久| 色综合免费视频| 国产成人综合av| 久久精品影视| 波多野结衣办公室双飞| 狠狠操狠狠色综合网| yiren22亚洲综合伊人22| 亚洲精品欧美一区二区三区| 很黄很黄激情成人| 99久久人妻无码精品系列| 欧美日韩国产一级| 欧美人与禽性xxxxx杂性| 久久99导航| 久久成人综合网| 日本a在线观看| 国产一区二区三区三区在线观看| gogo大尺度成人免费视频| 黄色一级在线视频| 中日韩免费视频中文字幕| 性中国古装videossex| 日本高清视频精品| 亚洲深深色噜噜狠狠爱网站| caopor在线| 欧美日韩亚州综合| segui88久久综合| 亚洲资源在线网| av在线不卡观看免费观看| 中文字幕人妻互换av久久 | 国产成年人在线观看| av不卡免费电影| 一区二区的视频| 欧美在线观看网站| 欧美a级在线| 亚洲色图 激情小说| 亚洲国产欧美一区二区三区久久| 成人涩涩视频| 色欲av无码一区二区人妻|