创建者模式 builder
生活随笔
收集整理的這篇文章主要介紹了
创建者模式 builder
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
package mode.bulider;/*** * 首先是汽車,組成零件有:玻璃、輪胎、發動機;他們都是抽象的概念,所以用抽象類來創建* * */
public class Car {Glass glass;Wheel wheel;Engine engine;
}
package mode.bulider;public class JapaneseGlass extends Glass {public String toString() {return "\"Japanese Glass\"";} }
package mode.bulider; /*** * 抽象的輪胎* * */ public abstract class Wheel {}
package mode.bulider;public class JapaneseWheel extends Wheel {public String toString() {return "\"Janpanes Wheel\"";} }
package mode.bulider; /*** * 抽象的發動機* * */ public abstract class Engine {}
package mode.bulider;public class FranceEngine extends Engine {public String toString() {return "\"France Engine\"";} }
package mode.bulider;/*** * 創建一個汽車的構造器* * */ public interface CarBuilder {public void buildGlass();public void buildWheel();public void buildEngine();public Car getProduct(); }
下面是兩個具體的實現 package mode.bulider;public class CarABuilder implements CarBuilder {private Car product = null;public CarABuilder() {product = new Car();}@Overridepublic void buildGlass() {product.glass = new AmericanGlass();}@Overridepublic void buildWheel() {product.wheel = new AmericanWheel();}@Overridepublic void buildEngine() {product.engine = new ChineseEngine();}@Overridepublic Car getProduct() {buildGlass();buildEngine();buildWheel();return product;}}
package mode.bulider;public class CarBBuilder implements CarBuilder {private Car product;public CarBBuilder() {product = new Car();}@Overridepublic void buildGlass() {product.glass = new JapaneseGlass();}@Overridepublic void buildWheel() {product.wheel = new JapaneseWheel();}@Overridepublic void buildEngine() {product.engine = new FranceEngine();}@Overridepublic Car getProduct() {buildEngine();buildGlass();buildWheel();return product;}}
package mode.bulider;/*** * 構造器引導措施* * */ public class Director {private CarBuilder builder;public Director(CarBuilder builder) {this.builder = builder;}public Car Construct() {return builder.getProduct();} }
測試 package mode.bulider;public class Test {public static void main(String[] args) {Director d1 = new Director(new CarABuilder());Director d2 = new Director(new CarBBuilder());d1.Construct();d2.Construct();} }
package mode.bulider;public class JapaneseGlass extends Glass {public String toString() {return "\"Japanese Glass\"";} }
package mode.bulider; /*** * 抽象的輪胎* * */ public abstract class Wheel {}
package mode.bulider;public class JapaneseWheel extends Wheel {public String toString() {return "\"Janpanes Wheel\"";} }
package mode.bulider; /*** * 抽象的發動機* * */ public abstract class Engine {}
package mode.bulider;public class FranceEngine extends Engine {public String toString() {return "\"France Engine\"";} }
package mode.bulider;/*** * 創建一個汽車的構造器* * */ public interface CarBuilder {public void buildGlass();public void buildWheel();public void buildEngine();public Car getProduct(); }
下面是兩個具體的實現 package mode.bulider;public class CarABuilder implements CarBuilder {private Car product = null;public CarABuilder() {product = new Car();}@Overridepublic void buildGlass() {product.glass = new AmericanGlass();}@Overridepublic void buildWheel() {product.wheel = new AmericanWheel();}@Overridepublic void buildEngine() {product.engine = new ChineseEngine();}@Overridepublic Car getProduct() {buildGlass();buildEngine();buildWheel();return product;}}
package mode.bulider;public class CarBBuilder implements CarBuilder {private Car product;public CarBBuilder() {product = new Car();}@Overridepublic void buildGlass() {product.glass = new JapaneseGlass();}@Overridepublic void buildWheel() {product.wheel = new JapaneseWheel();}@Overridepublic void buildEngine() {product.engine = new FranceEngine();}@Overridepublic Car getProduct() {buildEngine();buildGlass();buildWheel();return product;}}
package mode.bulider;/*** * 構造器引導措施* * */ public class Director {private CarBuilder builder;public Director(CarBuilder builder) {this.builder = builder;}public Car Construct() {return builder.getProduct();} }
測試 package mode.bulider;public class Test {public static void main(String[] args) {Director d1 = new Director(new CarABuilder());Director d2 = new Director(new CarBBuilder());d1.Construct();d2.Construct();} }
總結
以上是生活随笔為你收集整理的创建者模式 builder的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Visual Studio引入外部库 -
- 下一篇: DOM相关(主要是var和let的区别用