溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Java建造者模式實(shí)例分析

發(fā)布時(shí)間:2022-02-28 09:13:26 來源:億速云 閱讀:127 作者:iii 欄目:開發(fā)技術(shù)

今天小編給大家分享一下Java建造者模式實(shí)例分析的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

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

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

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

缺點(diǎn)

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

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

使用場(chǎng)景

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

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

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

package com.asurplus.common.builder.style1;
public class UserInfo {
    private String name;
    private int age;
    /**
     * 創(chuàng)建一個(gè)新的建造者
     *
     * @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)建一個(gè)新的實(shí)例對(duì)象并賦值
         *
         * @return
         */
        public UserInfo build() {
            UserInfo userInfo = new UserInfo();
            userInfo.setName(this.name);
            userInfo.setAge(this.age);
            return userInfo;
        }
    }
}

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

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

1、引入依賴
<!-- lombok插件 -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>

Lombok 需要在 IDEA 中安裝插件,具體方法,請(qǐng)百度。

2、實(shí)現(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 的注解,我們省略了大部分代碼,但是具體的實(shí)現(xiàn)方式和我們的方式一是一模一樣的,調(diào)用方法也是一樣的。

三、測(cè)試

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é)果

Java建造者模式實(shí)例分析

以上就是“Java建造者模式實(shí)例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI