日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java设计模式笔记(5)建造者模式

發布時間:2023/12/10 java 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java设计模式笔记(5)建造者模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

建造者模式:將一個復雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。

建造者模式的4個角色:

Product產品類:通常是實現了模版方法模式,有模版方法和基本方法。

Builder抽象建造者:規范產品的組建,一般是由子類實現。

ConcreteBuilder具體建造者:實現抽象建造者定義的所有方法,并且返回一個組建好的對象。

Director導演類:負責安排已有模塊的順序,然后告訴Builder開始構建。

package com.juno.BuilderPattern;import java.util.ArrayList;public abstract class Product {public final static int MSG_OPERATE_1 = 1;public final static int MSG_OPERATE_2 = 2;private ArrayList<Integer> sequence = new ArrayList<Integer>();protected abstract void operate1();protected abstract void operate2();public final void doSomething() {if(sequence.size() == 0) {return;}for(int msg : sequence) {if (msg == MSG_OPERATE_1) {operate1();} else if (msg == MSG_OPERATE_2) {operate2();}}} public final void setSequence(ArrayList<Integer> sequence) {this.sequence = sequence;} }
package com.juno.BuilderPattern;public class ConcreteProductA extends Product {@Overrideprotected void operate1() {System.out.println("ProductA use MSG_OPERATE_1 operate1~~");}@Overrideprotected void operate2() {System.out.println("ProductA use MSG_OPERATE_2 operate2~~");}}
package com.juno.BuilderPattern;public class ConcreteProductB extends Product {@Overrideprotected void operate1() {System.out.println("ProductB use MSG_OPERATE_1 operate1~~");}@Overrideprotected void operate2() {System.out.println("ProductB use MSG_OPERATE_2 operate2~~");}}
package com.juno.BuilderPattern;import java.util.ArrayList;public abstract class Builder {public abstract void setPart(ArrayList<Integer> sequence);public abstract Product buildProduct(); }
package com.juno.BuilderPattern;import java.util.ArrayList;public class ConcreteBuilderA extends Builder {private ConcreteProductA productA = new ConcreteProductA();@Overridepublic void setPart(ArrayList<Integer> sequence) {this.productA.setSequence(sequence);}@Overridepublic ConcreteProductA buildProduct() {return this.productA;}}
package com.juno.BuilderPattern;import java.util.ArrayList;public class ConcreteBuilderB extends Builder {private ConcreteProductB productB = new ConcreteProductB();@Overridepublic void setPart(ArrayList<Integer> sequence) {this.productB.setSequence(sequence);}@Overridepublic ConcreteProductB buildProduct() {return this.productB;}}
package com.juno.BuilderPattern;import java.util.ArrayList;public class Director {private ArrayList<Integer> sequence = new ArrayList<Integer>();private ConcreteBuilderA productABuilder = new ConcreteBuilderA();private ConcreteBuilderB productBBuilder = new ConcreteBuilderB();public ConcreteProductA getProductA1() {sequence.clear();sequence.add(Product.MSG_OPERATE_1);sequence.add(Product.MSG_OPERATE_2);productABuilder.setPart(sequence);return productABuilder.buildProduct();}public ConcreteProductA getProductA2() {sequence.clear();sequence.add(Product.MSG_OPERATE_1);productABuilder.setPart(sequence);return productABuilder.buildProduct();}public ConcreteProductB getProductB1() {sequence.clear();sequence.add(Product.MSG_OPERATE_1);sequence.add(Product.MSG_OPERATE_2);productBBuilder.setPart(sequence);return productBBuilder.buildProduct();}public ConcreteProductB getProductB2() {sequence.clear();sequence.add(Product.MSG_OPERATE_2);productBBuilder.setPart(sequence);return productBBuilder.buildProduct();} } package com.juno.BuilderPattern;public class Client {public static void main(String[] args) {Director director = new Director();System.out.println("== ProductA1 ==");director.getProductA1().doSomething();System.out.println("== ProductA2 ==");director.getProductA2().doSomething();System.out.println("== ProductB1 ==");director.getProductB1().doSomething();System.out.println("== ProductB2 ==");director.getProductB2().doSomething();} }


打印: == ProductA1 == ProductA use MSG_OPERATE_1 operate1~~ ProductA use MSG_OPERATE_2 operate2~~ == ProductA2 == ProductA use MSG_OPERATE_1 operate1~~ == ProductB1 == ProductB use MSG_OPERATE_1 operate1~~ ProductB use MSG_OPERATE_2 operate2~~ == ProductB2 == ProductB use MSG_OPERATE_2 operate2~~






總結

以上是生活随笔為你收集整理的Java设计模式笔记(5)建造者模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。