看板 talk 關於我們 聯絡資訊
在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