构造者+指导者设计模式

网友投稿 269 2022-11-21

构造者+指导者设计模式

1.Product产品类,目前有两种产品A,B 2.他们的构造者是ProductABuilder和ProductBBuilder。 测试类: package com.nstc.builder; public class Test {     public static void main(String[] args) {         ProductBuilderDirector productBD1 = new ProductBuilderDirector(new ProductABuilder());         Product a = productBD1.build();         ProductBuilderDirector productBD2= new ProductBuilderDirector(new ProductBBuilder());         Product b = productBD2.build();         System.out.println(a);         System.out.println(b);     } }   构造者接口(抽象) package com.nstc.builder; public abstract class AProductBuilder {     protected abstract void buildName();     protected abstract void buildPrice();     protected abstract Product getProduct(); }   产品A的构造者: package com.nstc.builder; public class ProductABuilder extends AProductBuilder {     private Product product = new Product();     @Override     protected void buildName() {         this.product.setName("产品A的名称");     }     @Override     protected void buildPrice() {         this.product.setPrice(20);     }     @Override     protected Product getProduct() {         return this.product;     } }   产品B的构造者: package com.nstc.builder; public class ProductBBuilder extends AProductBuilder {     private Product product = new Product();     @Override     protected void buildName() {         this.product.setName("产品B的名称");     }     @Override     protected void buildPrice() {         this.product.setPrice(30);     }     @Override     protected Product getProduct() {         return this.product;     } }   构造者的指导者: package com.nstc.builder; public class ProductBuilderDirector {     private AProductBuilder builder = null;     public ProductBuilderDirector(AProductBuilder builder) {         this.builder = builder;     }     public Product build() {         builder.buildName();         builder.buildPrice();         return builder.getProduct();     } }   产品类:   package com.nstc.builder; public class Product {     private String name;     private Integer price;     public String getName() {         return name;     }     public void setName(String name) {         this.name = name;     }     public Integer getPrice() {         return price;     }     public void setPrice(Integer price) {         this.price = price;     }     @Override     public String toString() {         return "Product [name=" + name + ", price=" + price + "]";     } }

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Oracle对数据库字段类型的可重复提交脚本
下一篇:USB接口外壳地和信号地间的处理
相关文章

 发表评论

暂时没有评论,来抢沙发吧~