设计模式之建造者(Builder)模式( VMware 安装 Centos7 超详细过程)
- 技术交流
- 2024-10-26 01:30:01
设计模式之建造者(Builder)模式( VMware 安装 Centos7 超详细过程)
1、定义以及 UML 建模图
将一个复杂的对象的构建与它的表示分离,是的同样的构建过程可以创建不同的表示。
2、使用场景:多个部件或者零件,都可以装配到一个对象中,但是产生的运行结果又相同。
产品类非常复杂,或者产品类中调用顺序不同产生了不同的作用。
初始化一个对象特别复杂,如使用多个构造方法,或者说有很多参数,并且都有默认值时。
3、核心类(1) 抽象产品类 computer。(2) Builder 抽象 Builder,规范产品的组建,一般是由子类实现具体的组建过程。(3)MacbookBuilder 具体的Builder类,具体的创建对象的类。(4) Directror 统一组建过程。以组装一台计算机为主,主要进行组装主机,设置操作系统,设置显示器。
4、具体使用4.1 计算机抽象类 Computer
Computer.java public abstract class Computer { protected String mBoard; protected String mDisplay; protected String mOs; protected Computer(){ } public void setBoard(String board){ mBoard=board; } public void setDisplay(String display) { this.mDisplay = display; } public abstract void setOs() ; @Override public String toString() { return "Computer{" + "mBoard='" + mBoard + '\'' + ", mDisplay='" + mDisplay + '\'' + ", mOs='" + mOs + '\'' + '}'; }}4.2 具体产品类 MacBook
MacBook.java public class MacBook extends Computer{ protected MacBook() { } @Override public void setOs() { mOs="Mac OS X 12"; }}4.3 抽象 Builder
Builder.java public abstract class Builder { abstract void buildBoard(String board); abstract void buildDisplay(String display); abstract void buildOs(); abstract Computer build(); }4.4 具体的 Builder
MacBookBuilder.java public class MacBookBuilder extends Builder { private Computer mComputer=new MacBook(); @Override void buildBoard(String board) { mComputer.setBoard(board); } @Override void buildDisplay(String display) { mComputer.setDisplay(display); } @Override void buildOs() { mComputer.setOs(); } @Override Computer build() { return mComputer; }}4.5 Director类,负责具体的构造 Computer
Director.java public class Director { Builder mBuilser=null; public Director(Builder builer) { this.mBuilser = builer; } public void construct(String board,String display){ mBuilser.buildDisplay(display); mBuilser.buildBoard(board); mBuilser.buildOs(); }}4.6 具体使用
Test.java public class Test { public static void main(String[] args){ Builder builder=new MacBookBuilder(); Director pcDirector=new Director(builder); pcDirector.construct("英特尔主板","Retina显示器"); Computer computer = builder.build(); System.out.println(computer.toString()); } }5.总结为了灵活构造复杂对象,该对象会有多个成员变量,在外部调用的时候,不需要或者不方便一次性创建出所有的成员变量,在这种情况下,使用多个构造方法去构建对象,很难维护,这时候Builder设计模式解决这个问题,进行buid()方法中创建对象,并且将builder传入,该builder中,维护了传入对象的成员变量。
作者:OneXzgj
链接:www.jianshu.com/p/f958ba891467
设计模式之建造者(Builder)模式( VMware 安装 Centos7 超详细过程)由讯客互联技术交流栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“设计模式之建造者(Builder)模式( VMware 安装 Centos7 超详细过程)”