移动架构11_建造者模式
生活随笔
收集整理的這篇文章主要介紹了
移动架构11_建造者模式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Android移動架構匯總
1、定義
將一個復雜的構建與他的表示分離,使同樣的構建過程可以創建不同的表示。通俗的講,將對象的復雜創建和對象的使用分離開,這樣對象的創建時可以定制不同的類型的屬性,而對象的使用只關注于調用。
2、角色
以找房子為例,進行說明:
抽象建造者:給出一個抽象的接口,定義了各個工人所需要進行的工作。這些工作是為了完成對房子的創建,就像工地會有指導手冊一樣。
/**
* 建造者角色
* 工人接口,定義了各個工人所需要進行的工作
* 并不負責具體的建造
*
* 同時房子是具體的(農民工)建造的 所以需要有返回房子的方法
* @author tucheng
*
*/
public interface Build {
public void makeWindow();public void makeFloor();public Room getRoom();}
?
具體建造者:具體建造者,具體的建造者(農民工)去造房子。房子造完后需要將房子還給房屋主人,所以要有返回房子的方法。 public class WorkBuilder implements Build{private Room room=new Room();@Overridepublic void makeWindow() {room.setFloor("地板 ");}@Overridepublic void makeFloor() {room.setWindow("窗戶");}@Overridepublic Room getRoom() {return room;}}?
設計者(指導者): 他知道房子怎么設計 他會只會工人去建造-換做程序代碼中,他也肯定會持有工人的這個對象的引用 對工人所具備的能力和行為有很深的了解。 從整體角度出發,什么樣的房子都能跟你建成。他所有具備的功能可以覆蓋你完整的需求。哪怕業主只提出建個非常簡單的房子,但是他所具備的能力必須全部覆蓋-代碼中:所有提出的需求在設計者這個類里面都能找得到。 public class Designer {public void order(Build build) {build.makeFloor();build.makeWindow(); }}?
產品(房子): 房子會有那些屬性 public class Room {private String window;private String floor;public String getWindow() {return window; }public void setWindow(String window) {this.window = window; }public String getFloor() {return floor; }public void setFloor(String floor) {this.floor = floor; }@Override public String toString() {// TODO Auto-generated method stubreturn "---->floor "+floor+" window "+window; }}?
創建對象: public static void main(String[] args){Build worker = new WorkBuilder();Designer designer = new Designer();designer.order(worker);System.out.print(">>> "+worker.getRoom()); }?
3、使用場景 復雜的對象 不同的表示方法 在實際的使用場景中,可能不會嚴格按照上述的模式進行設計,如通常沒有抽象建造者和設計者,具體建造者中會有一個內部類保存設置的屬性 建造者: public class WorkBuilder {private RoomParams params;public WorkBuilder(){params = new RoomParams(); }public WorkBuilder makeWindow(String window){params.window = window;return this; }public WorkBuilder makeDoor(String door){params.door = door;return this; }public WorkBuilder makeChat(String chat){params.chat = chat;return this; }public WorkBuilder makeFloor(String floor){params.floor = floor;return this; }public Room build(){Room room = new Room();room.apply(params);return room; }class RoomParams{public String window;public String floor;public String door;public String chat; } }?
產品: public class Room {private String window;private String floor;private String door;private String chat;public void apply(WorkBuilder.RoomParams params){window = params.window;floor = params.floor;door = params.door;chat = params.chat; }}?
使用: WorkBuilder builder = new WorkBuilder(); Room room = builder.makeChat("椅子") .makeDoor("門") .makeFloor("地板") .makeWindow("窗戶") .build();?
4、常見的使用場景 AlterDialog總結
以上是生活随笔為你收集整理的移动架构11_建造者模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: npm install很慢(奇葩)解决方
- 下一篇: Ac-RADADADARADADADA-