国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

Java設(shè)計(jì)中的Builder模式的介紹

2024-05-06 15:20:25
字體:
供稿:網(wǎng)友

概述

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

使用場(chǎng)景

相同的方法,不同的執(zhí)行順序,產(chǎn)生不同的事件結(jié)果 多個(gè)部件或零件,都可以裝配到一個(gè)對(duì)象中,但產(chǎn)生的運(yùn)行結(jié)果又不相同時(shí) 產(chǎn)品類非常復(fù)雜,或者產(chǎn)品類中的調(diào)用順序不同產(chǎn)生不同的作用 當(dāng)初始化一個(gè)對(duì)象特別復(fù)雜,如參數(shù)多,且很多參數(shù)都具有默認(rèn)值時(shí)

下面從一個(gè)Person例子進(jìn)行分析重疊構(gòu)造器模式、JavaBeans模式、Builder模式的使用。Person類有兩個(gè)必要參數(shù)(id和name),有5個(gè)可選參數(shù)(age,sex,phone,address和desc)

重疊構(gòu)造器模式

在這種模式下,你提供第一個(gè)只有必要參數(shù)的構(gòu)造器,第二個(gè)構(gòu)造器有一個(gè)可選參數(shù),第三個(gè)有兩個(gè)可選參數(shù),依此類推,最后一個(gè)構(gòu)造器包含所有的可選參數(shù)。下面看看其編程實(shí)現(xiàn):

/ * 使用重疊構(gòu)造器模式 */public class Person { //必要參數(shù) private final int id; private final String name; //可選參數(shù) private final int age; private final String sex; private final String phone; private final String address; private final String desc; public Person(int id, String name) { this(id, name, 0); } public Person(int id, String name, int age) { this(id, name, age, ""); } public Person(int id, String name, int age, String sex) { this(id, name, age, sex, ""); } public Person(int id, String name, int age, String sex, String phone) { this(id, name, age, sex, phone, ""); } public Person(int id, String name, int age, String sex, String phone, String address) { this(id, name, age, sex, phone, address, ""); } public Person(int id, String name, int age, String sex, String phone, String address, String desc) { this.id = id; this.name = name; this.age = age; this.sex = sex; this.phone = phone; this.address = address; this.desc = desc; }}

從上面的代碼中,當(dāng)你想要?jiǎng)?chuàng)建實(shí)例的時(shí)候,就利用參數(shù)列表最短的構(gòu)造器,但該列表中包含了要設(shè)置的所有參數(shù):

Person person = new Persion(1, "李四", 20, "男", "18800000000", "China", "測(cè)試使用重疊構(gòu)造器模式");

重疊構(gòu)造器可行,但是當(dāng)有許多參數(shù)的時(shí)候,創(chuàng)建使用代碼會(huì)很難寫,并且較難以閱讀

JavaBeans模式

采用Javabean 的寫法,寫一堆屬性的setter方法,通過生成對(duì)象,讓后調(diào)用setter方法給屬性賦值。

/ * 使用JavaBeans模式 */public class Person { //必要參數(shù) private int id; private String name; //可選參數(shù) private int age; private String sex; private String phone; private String address; private String desc; public void setId(int id) { this.id = id; } public void setName(String name) { this.name = name; } public void setAge(int age) { this.age = age; } public void setSex(String sex) { this.sex = sex; } public void setPhone(String phone) { this.phone = phone; } public void setAddress(String address) { this.address = address; } public void setDesc(String desc) { this.desc = desc; }            
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 泗水县| 九江市| 玛沁县| 石泉县| 新津县| 康平县| 贡山| 吴川市| 汪清县| 岳阳市| 奉节县| 安阳市| 蒙阴县| 兰考县| 安丘市| 昌吉市| 石棉县| 文安县| 游戏| 静安区| 长白| 绥化市| 孝感市| 庄浪县| 夏邑县| 盐亭县| 子长县| 白水县| 新营市| 东辽县| 桦甸市| 翁牛特旗| 岳阳县| 柳河县| 金昌市| 樟树市| 京山县| 淮北市| 丰顺县| 元谋县| 同仁县|