在Java,一般生成物件的方式就是透過事先定義好的建構子,來生成物件。
但是如果類別的屬性很多,且各種屬性可以互相組合出不同的集合,這樣的話
建構子就會有很多個,這樣建構子就會過多,造成程式難以維護。
一種改善的方式,就是將類別內,屬性的setXXX方法給改寫,原本的setXXX方法
並不回傳任何物件,現在改讓這些setXXX方法回傳該類別之物件。
這樣的話,每呼叫一次物件的setXXX方法,就可以對該物件添加一次屬性值,
只要事先定義好所有的setXXX方法,若有X個屬性,就會固定有X個setXXX方法。
要對物件添加屬性值,就只要呼叫這些
setXXX方法就好,不用擔心類別各種屬性互相排列組合,會生成過多建構子的問題。
這樣子改寫看似可行,但是還是有類別所有屬性都會被外部使用者看到,
所以說這樣改寫,會有缺乏權限控管的問題。
-------------------------------------------
所以才有了建構者模式,建構者模式就是將以上的寫法進一步改良,
將原本的將原本的X個屬性,就會固定有X個setXXX方法,移至另一個類別內,
這樣這個類別即可將這X個屬性,X個setXXX方法給封裝起來。
外部使用者可以只看到這個新生成的類別,不用看到原本那個很多屬性的類別,
這樣的話即是透過封裝,設定使用者使用類別的權限。
在Java Stream API,大量使用這種設計模式。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.216.53.11 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/talk/M.1710852037.A.45E.html