最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中常用的設(shè)計模式之建造者模式詳解

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

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

1.建造者獨(dú)立,易擴(kuò)展。

2.便于控制細(xì)節(jié)風(fēng)險。

缺點(diǎn)

1.產(chǎn)品必須有共同點(diǎn),范圍有限制。

2.如內(nèi)部變化復(fù)雜,會有很多的建造類。

使用場景

1.需要生成的對象具有復(fù)雜的內(nèi)部結(jié)構(gòu)。

2.需要生成的對象內(nèi)部屬性本身相互依賴。

一、實現(xiàn)方式

package com.asurplus.common.builder.style1;
public class UserInfo {
    private String name;
    private int age;
    /**
     * 創(chuàng)建一個新的建造者
     *
     * @return
     */
    public static UserInfoBuilder builder() {
        return new UserInfoBuilder();
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
	@Override
    public String toString() {
        return "UserInfo{" +
                "name='" + name +
                ", age=" + age +
                '}';
    }
    /**
     * 建造者內(nèi)部類
     */
    public static class UserInfoBuilder {
        private String name;
        private int age;
        public UserInfoBuilder name(String name) {
            this.name = name;
            return this;
        }
        public UserInfoBuilder age(int age) {
            this.age = age;
            return this;
        }
        /**
         * 創(chuàng)建一個新的實例對象并賦值
         *
         * @return
         */
        public UserInfo build() {
            UserInfo userInfo = new UserInfo();
            userInfo.setName(this.name);
            userInfo.setAge(this.age);
            return userInfo;
        }
    }
}

我們定義了一個 UserInfo 類,有 name,age 兩個屬性,還定義了一個靜態(tài)內(nèi)部類 UserInfoBuilder,幫助我們建造 UserInfo,并提供鏈?zhǔn)秸{(diào)用的方法。

二、實現(xiàn)方式

1、引入依賴

<!-- lombok插件 -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>

Lombok 需要在 IDEA 中安裝插件,具體方法,請百度。

2、實現(xiàn)

package com.asurplus.common.builder.style2;
import lombok.Builder;
import lombok.Data;
/**
 * get set toString 方法注解
 */
@Data
/**
 * 建造者模式注解
 */
@Builder
public class UserInfo2 {
    private String name;
    private int age;
}

基于 Lombok 的注解,我們省略了大部分代碼,但是具體的實現(xiàn)方式和我們的方式一是一模一樣的,調(diào)用方法也是一樣的。

三、測試

package com.asurplus.common.builder;
import com.asurplus.common.builder.style1.UserInfo;
import com.asurplus.common.builder.style2.UserInfo2;
/**
 * 建造者模式
 */
public class TestMain {
    public static void main(String[] args) {
        // 手寫的方式
        UserInfo userInfo = UserInfo.builder().name("張三").age(20).build();
        System.out.println(userInfo);
        // 注解的方式
        UserInfo2 userInfo2 = UserInfo2.builder().name("李四").age(30).build();
        System.out.println(userInfo2);
    }
}

輸出結(jié)果

在這里插入圖片描述

總結(jié)

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

相關(guān)文章

  • 詳解SpringBoot中Controller接收對象列表實現(xiàn)

    詳解SpringBoot中Controller接收對象列表實現(xiàn)

    這篇文章主要介紹了詳解SpringBoot中Controller接收對象列表實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • Java編程中的條件判斷之if語句的用法詳解

    Java編程中的條件判斷之if語句的用法詳解

    這篇文章主要介紹了Java編程中的條件判斷之if語句的用法詳解,是Java入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-11-11
  • Java 常用類解析:java異常機(jī)制,異常棧,異常處理方式,異常鏈,異常丟失詳解

    Java 常用類解析:java異常機(jī)制,異常棧,異常處理方式,異常鏈,異常丟失詳解

    這篇文章主要介紹了Java 常用類解析:java異常機(jī)制,異常棧,異常處理方式,異常鏈,異常丟失詳解的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • java遞歸算法的實例詳解

    java遞歸算法的實例詳解

    在本篇文章里小編給大家整理了關(guān)于java遞歸算法的實例內(nèi)容,以及相關(guān)知識點(diǎn)總結(jié),需要的朋友們可以學(xué)習(xí)下。
    2020-02-02
  • Java流形式返回前端的實現(xiàn)示例

    Java流形式返回前端的實現(xiàn)示例

    ? Java后端開發(fā)項目時,需要給前端傳一些數(shù)據(jù),本文主要介紹了Java流形式返回前端的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • java編程實現(xiàn)求解八枚銀幣代碼分享

    java編程實現(xiàn)求解八枚銀幣代碼分享

    這篇文章主要介紹了java編程實現(xiàn)求解八枚銀幣代碼分享,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • Java Bean與Map之間相互轉(zhuǎn)化的實現(xiàn)方法

    Java Bean與Map之間相互轉(zhuǎn)化的實現(xiàn)方法

    這篇文章主要介紹了Java Bean與Map之間相互轉(zhuǎn)化的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 教你用Java驗證服務(wù)器登錄系統(tǒng)

    教你用Java驗證服務(wù)器登錄系統(tǒng)

    這篇文章主要介紹了教你用Java驗證服務(wù)器登錄系統(tǒng),文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-04-04
  • IDEA怎么生成UML類圖的實現(xiàn)

    IDEA怎么生成UML類圖的實現(xiàn)

    這篇文章主要介紹了IDEA怎么生成UML類圖的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • mybatis-plus 返回部分字段的解決方式

    mybatis-plus 返回部分字段的解決方式

    這篇文章主要介紹了mybatis-plus 返回部分字段的解決方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10

最新評論

桃源县| 涞源县| 双城市| 南宁市| 宝清县| 防城港市| 舟山市| 江川县| 宁夏| 龙井市| 汉阴县| 涞水县| 全南县| 阳江市| 浦县| 紫金县| 汕头市| 海南省| 广昌县| 大庆市| 沙田区| 大城县| 阜康市| 太康县| 建平县| 略阳县| 潍坊市| 密云县| 武城县| 叶城县| 百色市| 乌审旗| 宁明县| 应用必备| 灵武市| 上蔡县| 永胜县| 桦南县| 新沂市| 南宁市| 苍溪县|