不需要丢链接可以百度收录的网站,项目网上公示是什么意思,系统优化软件排行榜,中商华兴建设有限公司网站这个模式以前也义Android-kotlin的场景下讲过 Android 用建造者模式模式写一个Dialog-CSDN博客 不过用的是 变种的建造者模式 建造者模式#xff1a; 属于创建型模式 提供了一种创建对象的最佳方式#xff0c; 使用多个简单的对象一步一步构建成一个复杂的对象 。 介绍
意图… 这个模式以前也义Android-kotlin的场景下讲过 Android 用建造者模式模式写一个Dialog-CSDN博客 不过用的是 变种的建造者模式 建造者模式 属于创建型模式 提供了一种创建对象的最佳方式 使用多个简单的对象一步一步构建成一个复杂的对象 。 介绍
意图将一个复杂的构建与其表示相分离使得同样的构建过程可以创建不同的表示。主要解决问题一些基本部件不会变而其组合经常变化的时候。需要生成的对象具有复杂的内部结构需要生成的对象内部属性本身相互依赖。关键代码实现与被代理类组合。优点1、建造者独立易扩展。 2、便于控制细节风险。 缺点1、产品必须有共同点范围有限制。 2、如果内部变化复杂会有很多的建造类。 以建造一个三角形圆形矩形的图形为例
角色类包含多个组成部件的复杂对象 public class Shape {private String triangle;private String circular;private String rectangle;public void setTriangle(String triangle) {this.triangle triangle;}public void setCircular(String circular) {this.circular circular;}public void setRectangle(String rectangle) {this.rectangle rectangle;}public void draw() {//使用得到的具体的三角形圆形矩形绘制一个图形}
} 抽象建造者包含创建产品各个子部件的抽象方法 abstract class Builder {protected Shape shape new Shape();public abstract void buildTriangle();public abstract void buildCircular();public abstract void buildRectangle();public Shape getShape() {return shape;}
} 具体建造者实现了抽象建造者接口 public class ConcreteBuilder1 extends Builder{Overridepublic void buildTriangle() {shape.setTriangle(建造 红色三角形);}Overridepublic void buildCircular() {shape.setCircular(建造 蓝色圆形);}Overridepublic void buildRectangle() {shape.setRectangle(建造 绿色矩形);}
} public class ConcreteBuilder2 extends Builder{Overridepublic void buildTriangle() {shape.setTriangle(建造 青色三角形);}Overridepublic void buildCircular() {shape.setCircular(建造 蓝色圆形);}Overridepublic void buildRectangle() {shape.setRectangle(建造 紫色矩形);}
} 指挥者调用建造者中的方法完成复杂对象的创建。 public class Director {private Builder builder;public Director(Builder builder) {this.builder builder;}//产品构建与组装方法public Shape construct() {builder.buildTriangle();builder.buildCircular();builder.buildRectangle();return builder.getShape();}
} 使用 public static void main(String[] args) {Builder builder new ConcreteBuilder1();Director director new Director(builder);Shape shape director.construct();shape.draw();builder new ConcreteBuilder2();director new Director(builder);shape director.construct();shape.draw();}