国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Java】 Java設(shè)計(jì)模式

這篇具有很好參考價(jià)值的文章主要介紹了【Java】 Java設(shè)計(jì)模式。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

白白胖胖,充滿希望~


1. 工廠模式

Java工廠模式(Factory Pattern)是一種創(chuàng)建型設(shè)計(jì)模式,它提供了一種創(chuàng)建對(duì)象的最佳方式,而無(wú)需將對(duì)象的創(chuàng)建邏輯暴露給客戶端代碼。工廠模式通過(guò)定義一個(gè)工廠方法來(lái)創(chuàng)建對(duì)象,而客戶端只需要調(diào)用該工廠方法即可獲得所需對(duì)象,從而實(shí)現(xiàn)了對(duì)象的創(chuàng)建和使用的分離。

在Java中,工廠模式通常包括以下幾個(gè)角色:

抽象產(chǎn)品(Product):定義了產(chǎn)品對(duì)象的通用接口,所有具體產(chǎn)品都必須實(shí)現(xiàn)這個(gè)接口。

具體產(chǎn)品(Concrete Product):實(shí)現(xiàn)了抽象產(chǎn)品接口的具體類,在工廠方法中將被創(chuàng)建。

抽象工廠(Factory):定義了工廠方法,用于創(chuàng)建產(chǎn)品對(duì)象的接口。

具體工廠(Concrete Factory):實(shí)現(xiàn)了工廠方法,返回具體產(chǎn)品對(duì)象的實(shí)例。

1.1 工廠模式運(yùn)用場(chǎng)景

當(dāng)需要在運(yùn)行時(shí)根據(jù)某些條件創(chuàng)建對(duì)象時(shí),可以使用工廠模式。例如,如果您正在構(gòu)建一個(gè)游戲,每當(dāng)用戶選擇一個(gè)角色時(shí),您都希望創(chuàng)建一個(gè)相應(yīng)的角色類的實(shí)例,則可以使用工廠模式。

如果需要隱藏特定類或者實(shí)現(xiàn)的細(xì)節(jié)并只暴露一個(gè)接口,那么您可以使用工廠模式。這使得客戶端代碼更加靈活和易于維護(hù)。

工廠模式還可以用于解決依賴性注入問(wèn)題。如果您有一個(gè)類,它需要依賴于其他類的實(shí)例,并且您想要通過(guò)工廠來(lái)管理這些依賴項(xiàng),那么使用工廠模式可以很好地解決此問(wèn)題。

2. 單例模式

單例模式是一種創(chuàng)建型設(shè)計(jì)模式,它保證一個(gè)類只有一個(gè)實(shí)例,并提供全局訪問(wèn)點(diǎn)來(lái)訪問(wèn)該實(shí)例。

2.1 單例模式運(yùn)用場(chǎng)景

單例模式通常用于需要保證全局只有一個(gè)實(shí)例對(duì)象的場(chǎng)景,例如:

數(shù)據(jù)庫(kù)連接池:在應(yīng)用程序中,數(shù)據(jù)庫(kù)連接池是一種重要的資源,如果每次使用時(shí)都創(chuàng)建一個(gè)新的連接,會(huì)影響應(yīng)用程序的性能。因此,將數(shù)據(jù)庫(kù)連接池實(shí)現(xiàn)為單例可以避免創(chuàng)建多個(gè)連接,從而提高應(yīng)用程序的性能。

日志記錄器:在應(yīng)用程序中,日志記錄器是一種常見(jiàn)的工具,它可以用來(lái)記錄應(yīng)用程序的運(yùn)行狀態(tài)以及錯(cuò)誤信息。由于日志記錄器在整個(gè)應(yīng)用程序中都會(huì)被使用,因此將其實(shí)現(xiàn)為單例可以確保所有的日志記錄都進(jìn)入同一個(gè)文件或者數(shù)據(jù)庫(kù)中,便于統(tǒng)一管理和查看。

配置文件管理器:在應(yīng)用程序中,配置文件通常用來(lái)存儲(chǔ)應(yīng)用程序的配置信息,例如數(shù)據(jù)庫(kù)連接參數(shù)、服務(wù)器地址等。將配置文件管理器實(shí)現(xiàn)為單例可以確保所有的配置信息都被正確地加載,并且不會(huì)出現(xiàn)重復(fù)加載的情況。

總之,單例模式適用于任何需要確保全局只有一個(gè)實(shí)例對(duì)象的場(chǎng)景,特別是那些需要經(jīng)常訪問(wèn)的對(duì)象,因?yàn)樗梢詭椭覀兘档蛯?duì)象的創(chuàng)建和銷毀成本,提高系統(tǒng)的性能和可維護(hù)性。

3. 建造者模式

建造者模式(Builder Pattern):將一個(gè)復(fù)雜對(duì)象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過(guò)程可以創(chuàng)建不同的表示。

public class User {
    private String name;
    private int age;
    private String email;

    private User(UserBuilder builder) {
        this.name = builder.name;
        this.age = builder.age;
        this.email = builder.email;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public String getEmail() {
        return email;
    }

    public static class UserBuilder {
        private String name;
        private int age;
        private String email;

        public UserBuilder(String name, int age, String email) {
            this.name = name;
            this.age = age;
            this.email = email;
        }

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

在上面的代碼中,我們定義了一個(gè)User類和一個(gè)內(nèi)部類UserBuilder,在UserBuilder類中定義了三個(gè)屬性:name、age和email,并提供了一個(gè)build()方法來(lái)返回一個(gè)User對(duì)象。這個(gè)UserBuilder類可以用來(lái)初始化User對(duì)象的屬性,如下所示:

User user = new User.UserBuilder(“Tom”, 18, “tom@example.com”).build();

3.1 使用場(chǎng)景

建造者模式是一種創(chuàng)建型設(shè)計(jì)模式,它的主要目的是將一個(gè)復(fù)雜對(duì)象的構(gòu)造過(guò)程和表示分離,從而使得相同的構(gòu)造過(guò)程可以創(chuàng)建不同的表示形式。建造者模式通常適用于以下情況:

創(chuàng)建一個(gè)復(fù)雜的對(duì)象,其構(gòu)造需要多個(gè)步驟或者涉及到多個(gè)可選組件。

需要在某些步驟中靈活地配置對(duì)象的構(gòu)造過(guò)程,以滿足不同的需求。

需要隱藏對(duì)象的構(gòu)造細(xì)節(jié),防止客戶端直接訪問(wèn)構(gòu)造函數(shù)。

需要避免構(gòu)造函數(shù)參數(shù)列表過(guò)長(zhǎng),難以管理和維護(hù)。

建造者模式通過(guò)將構(gòu)造過(guò)程分解為多個(gè)步驟,并提供一個(gè)統(tǒng)一的接口來(lái)指導(dǎo)這些步驟的執(zhí)行順序,使得客戶端可以更加方便地創(chuàng)建所需的對(duì)象,同時(shí)也能夠靈活地配置其構(gòu)造過(guò)程,提高代碼的可讀性、可維護(hù)性和可擴(kuò)展性。

4. 策略模式

Java 策略模式(Strategy Pattern)是一種行為型設(shè)計(jì)模式,它定義了一組算法,將每個(gè)算法都封裝起來(lái),使得它們之間可以互換。策略模式讓算法的變化獨(dú)立于使用算法的客戶端,從而提高了代碼的靈活性和可復(fù)用性。
在 Java 中,策略模式通常包括以下角色:

Context:上下文對(duì)象,持有一個(gè)對(duì)策略對(duì)象的引用,并將具體的任務(wù)委托給策略對(duì)象進(jìn)行處理。

Strategy:策略接口,定義了所有支持的算法的公共接口。

ConcreteStrategy:具體策略類,實(shí)現(xiàn)策略接口中定義的算法,完成具體的任務(wù)。

4.1 應(yīng)用場(chǎng)景

以下是Java策略模式的一些應(yīng)用場(chǎng)景:

各種排序算法:在排序算法中,我們可以定義一個(gè)Comparator接口,并實(shí)現(xiàn)不同的比較器算法,這些算法可以根據(jù)具體需求靈活地進(jìn)行切換。

圖像處理:在圖像處理中,我們可以定義一個(gè)Filter接口,并實(shí)現(xiàn)不同的濾鏡算法,這些算法可以根據(jù)用戶需要?jiǎng)討B(tài)地選擇和切換。

支付方式選擇:在電商網(wǎng)站中,用戶可以根據(jù)自己的需求選擇不同的支付方式,而定義一個(gè)PaymentStrategy接口并實(shí)現(xiàn)不同的支付算法就可以實(shí)現(xiàn)這一功能。

游戲角色攻擊方式:在游戲中,我們可以定義一個(gè)AttackStrategy接口,并實(shí)現(xiàn)不同的攻擊算法,這些算法可以根據(jù)不同的游戲角色進(jìn)行靈活切換。
適配器模式(Adapter Pattern):將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口,使得原本由于接口不兼容而不能在一起工作的那些類可以在一起工作。

裝飾者模式(Decorator Pattern):動(dòng)態(tài)地給一個(gè)對(duì)象添加一些額外的職責(zé),就增加功能而言,比生成子類更為靈活。

觀察者模式(Observer Pattern):定義對(duì)象間的一種一對(duì)多的依賴關(guān)系,當(dāng)一個(gè)對(duì)象狀態(tài)改變時(shí),所有依賴它的對(duì)象都會(huì)自動(dòng)得到通知。

迭代器模式(Iterator Pattern):提供一種方法來(lái)訪問(wèn)聚合對(duì)象中的每個(gè)元素,而又不暴露該對(duì)象的內(nèi)部表示。

模板方法模式(Template Method Pattern):定義一個(gè)操作中的算法骨架,將一些步驟延遲到子類中實(shí)現(xiàn)。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-708926.html

到了這里,關(guān)于【Java】 Java設(shè)計(jì)模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【迭代器設(shè)計(jì)模式詳解】C/Java/JS/Go/Python/TS不同語(yǔ)言實(shí)現(xiàn)

    【迭代器設(shè)計(jì)模式詳解】C/Java/JS/Go/Python/TS不同語(yǔ)言實(shí)現(xiàn)

    迭代器模式(Iterator Pattern),是一種結(jié)構(gòu)型設(shè)計(jì)模式。給數(shù)據(jù)對(duì)象構(gòu)建一套按順序訪問(wèn)集合對(duì)象元素的方式,而不需要知道數(shù)據(jù)對(duì)象的底層表示。 迭代器模式是與集合共存的,我們只要實(shí)現(xiàn)一個(gè)集合,就需要同時(shí)提供這個(gè)集合的迭代器,就像Java中的Collection,List、Set、Map等

    2023年04月17日
    瀏覽(15)
  • 【享元設(shè)計(jì)模式詳解】C/Java/JS/Go/Python/TS不同語(yǔ)言實(shí)現(xiàn)

    【享元設(shè)計(jì)模式詳解】C/Java/JS/Go/Python/TS不同語(yǔ)言實(shí)現(xiàn)

    享元模式(Flyweight Pattern),是一種結(jié)構(gòu)型設(shè)計(jì)模式。主要用于減少創(chuàng)建對(duì)象的數(shù)量,以減少內(nèi)存占用和提高性能。它摒棄了在每個(gè)對(duì)象中保存所有數(shù)據(jù)的方式,通過(guò)共享多個(gè)對(duì)象所共有的相同狀態(tài),讓你能在有限的內(nèi)存容量中載入更多對(duì)象。 當(dāng)程序需要生成數(shù)量巨大的相似

    2023年04月10日
    瀏覽(29)
  • 【模板方法設(shè)計(jì)模式詳解】C/Java/JS/Go/Python/TS不同語(yǔ)言實(shí)現(xiàn)

    模板方法模式(Template Method Pattern)也叫模板模式,是一種行為型模式。它定義了一個(gè)抽象公開(kāi)類,包含基本的算法骨架,而將一些步驟延遲到子類中,模板方法使得子類可以不改變算法的結(jié)構(gòu),只是重定義該算法的某些特定步驟。不同的子類以不同的方式實(shí)現(xiàn)這些抽象方法

    2024年02月01日
    瀏覽(22)
  • 【訪問(wèn)者設(shè)計(jì)模式詳解】C/Java/JS/Go/Python/TS不同語(yǔ)言實(shí)現(xiàn)

    【訪問(wèn)者設(shè)計(jì)模式詳解】C/Java/JS/Go/Python/TS不同語(yǔ)言實(shí)現(xiàn)

    訪問(wèn)者模式(Visitor Pattern)是一種行為型模式。它封裝一個(gè)訪問(wèn)者類,把各元素類的操作集合起來(lái),目的是將數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)操作分離。在不改變?cè)性仡悢?shù)據(jù)結(jié)構(gòu)的前提下,改變了元素類的執(zhí)行算法。 當(dāng)某些較為穩(wěn)定的東西(數(shù)據(jù)結(jié)構(gòu)或算法),不想直接被改變但又想擴(kuò)

    2024年02月02日
    瀏覽(22)
  • 【解釋器設(shè)計(jì)模式詳解】C/Java/Go/JS/TS/Python不同語(yǔ)言實(shí)現(xiàn)

    【解釋器設(shè)計(jì)模式詳解】C/Java/Go/JS/TS/Python不同語(yǔ)言實(shí)現(xiàn)

    解釋器模式(Interpreter Pattern)是一種行為型設(shè)計(jì)模式。這種模式實(shí)現(xiàn)了一個(gè)表達(dá)式接口,該接口解釋一個(gè)特定的上下文。這種模式常被用在 SQL 解析、符號(hào)處理引擎等。 解釋器模式常用于對(duì)簡(jiǎn)單語(yǔ)言的編譯或分析實(shí)例中,為了掌握好它的結(jié)構(gòu)與實(shí)現(xiàn),必須先了解編譯原理中的

    2023年04月12日
    瀏覽(1388)
  • 【備忘錄設(shè)計(jì)模式詳解】C/Java/JS/Go/Python/TS不同語(yǔ)言實(shí)現(xiàn)

    【備忘錄設(shè)計(jì)模式詳解】C/Java/JS/Go/Python/TS不同語(yǔ)言實(shí)現(xiàn)

    備忘錄模式(Memento Pattern)是一種結(jié)構(gòu)型設(shè)計(jì)模式。這種模式就是在不破壞封裝的條件下,將一個(gè)對(duì)象的狀態(tài)捕捉(Capture)住,并放在外部存儲(chǔ)起來(lái),從而可以在將來(lái)合適的時(shí)候把這個(gè)對(duì)象還原到存儲(chǔ)起來(lái)的狀態(tài)。備忘錄模式常常與命令模式和迭代子模式一同使用。 備忘錄模式

    2023年04月20日
    瀏覽(26)
  • 【中介者設(shè)計(jì)模式詳解】C/Java/JS/Go/Python/TS不同語(yǔ)言實(shí)現(xiàn)

    【中介者設(shè)計(jì)模式詳解】C/Java/JS/Go/Python/TS不同語(yǔ)言實(shí)現(xiàn)

    中介者模式(Mediator Pattern)是一種行為型模式。它限制對(duì)象之間的直接交互,它用一個(gè)中介對(duì)象來(lái)封裝一系列的動(dòng)作,以讓對(duì)象之間進(jìn)行交流。中介者使各個(gè)對(duì)象不需要顯式地相互引用,從而使其耦合松散,而且可以獨(dú)立地改變它們之間的交互。 當(dāng)一些對(duì)象和其他對(duì)象緊密

    2023年04月19日
    瀏覽(28)
  • 【觀察者設(shè)計(jì)模式詳解】C/Java/JS/Go/Python/TS不同語(yǔ)言實(shí)現(xiàn)

    【觀察者設(shè)計(jì)模式詳解】C/Java/JS/Go/Python/TS不同語(yǔ)言實(shí)現(xiàn)

    觀察者模式(Observer Pattern)是一種行為型模式。它定義對(duì)象間的一種一對(duì)多的依賴關(guān)系,當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí),所有依賴于它的對(duì)象都得到通知并被自動(dòng)更新。 觀察者模式使用三個(gè)類Subject、Observer和Client。Subject對(duì)象帶有綁定觀察者到Client對(duì)象和從Client對(duì)象解綁觀察

    2023年04月21日
    瀏覽(24)
  • java SSM新聞管理系統(tǒng)myeclipse開(kāi)發(fā)mysql數(shù)據(jù)庫(kù)springMVC模式j(luò)ava編程計(jì)算機(jī)網(wǎng)頁(yè)設(shè)計(jì)

    java SSM新聞管理系統(tǒng)myeclipse開(kāi)發(fā)mysql數(shù)據(jù)庫(kù)springMVC模式j(luò)ava編程計(jì)算機(jī)網(wǎng)頁(yè)設(shè)計(jì)

    一、源碼特點(diǎn) ?? ?java SSM新聞管理系統(tǒng)是一套完善的web設(shè)計(jì)系統(tǒng)(系統(tǒng)采用SSM框架進(jìn)行設(shè)計(jì)開(kāi)發(fā),spring+springMVC+mybatis),對(duì)理解JSP java編程開(kāi)發(fā)語(yǔ)言有幫助,系統(tǒng)具有完整的源代碼和數(shù)據(jù)庫(kù),系統(tǒng)主要采用B/S模式開(kāi)發(fā)。開(kāi)發(fā)環(huán)境為T(mén)OMCAT7.0,Myeclipse8.5開(kāi)發(fā),數(shù)據(jù)庫(kù)為Mysql5.0,使用

    2024年02月21日
    瀏覽(26)
  • java SSM 攝影作品網(wǎng)站myeclipse開(kāi)發(fā)mysql數(shù)據(jù)庫(kù)springMVC模式j(luò)ava編程計(jì)算機(jī)網(wǎng)頁(yè)設(shè)計(jì)

    java SSM 攝影作品網(wǎng)站myeclipse開(kāi)發(fā)mysql數(shù)據(jù)庫(kù)springMVC模式j(luò)ava編程計(jì)算機(jī)網(wǎng)頁(yè)設(shè)計(jì)

    一、源碼特點(diǎn) ?? ?java SSM 攝影作品網(wǎng)站系統(tǒng)是一套完善的web設(shè)計(jì)系統(tǒng)(系統(tǒng)采用SSM框架進(jìn)行設(shè)計(jì)開(kāi)發(fā),spring+springMVC+mybatis),對(duì)理解JSP java編程開(kāi)發(fā)語(yǔ)言有幫助,系統(tǒng)具有完整的源代 碼和數(shù)據(jù)庫(kù),系統(tǒng)主要采用B/S模式開(kāi)發(fā)。開(kāi)發(fā)環(huán)境為T(mén)OMCAT7.0,Myeclipse8.5開(kāi)發(fā),數(shù)據(jù)庫(kù)為Mysql5

    2024年02月08日
    瀏覽(24)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包