创建者模式 builder
生活随笔
收集整理的這篇文章主要介紹了
创建者模式 builder
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
package mode.bulider;/*** * 首先是汽車(chē),組成零件有:玻璃、輪胎、發(fā)動(dòng)機(jī);他們都是抽象的概念,所以用抽象類(lèi)來(lái)創(chuàng)建* * */
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; /*** * 抽象的發(fā)動(dòng)機(jī)* * */ public abstract class Engine {}
package mode.bulider;public class FranceEngine extends Engine {public String toString() {return "\"France Engine\"";} }
package mode.bulider;/*** * 創(chuàng)建一個(gè)汽車(chē)的構(gòu)造器* * */ public interface CarBuilder {public void buildGlass();public void buildWheel();public void buildEngine();public Car getProduct(); }
下面是兩個(gè)具體的實(shí)現(xiàn) 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;/*** * 構(gòu)造器引導(dǎo)措施* * */ public class Director {private CarBuilder builder;public Director(CarBuilder builder) {this.builder = builder;}public Car Construct() {return builder.getProduct();} }
測(cè)試 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; /*** * 抽象的發(fā)動(dòng)機(jī)* * */ public abstract class Engine {}
package mode.bulider;public class FranceEngine extends Engine {public String toString() {return "\"France Engine\"";} }
package mode.bulider;/*** * 創(chuàng)建一個(gè)汽車(chē)的構(gòu)造器* * */ public interface CarBuilder {public void buildGlass();public void buildWheel();public void buildEngine();public Car getProduct(); }
下面是兩個(gè)具體的實(shí)現(xiàn) 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;/*** * 構(gòu)造器引導(dǎo)措施* * */ public class Director {private CarBuilder builder;public Director(CarBuilder builder) {this.builder = builder;}public Car Construct() {return builder.getProduct();} }
測(cè)試 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();} }
總結(jié)
以上是生活随笔為你收集整理的创建者模式 builder的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Visual Studio引入外部库 -
- 下一篇: DOM相关(主要是var和let的区别用