最近在学习设计模式,之前断断续续的看过好多,自己也没有专门的练习和深入了解过,一直感觉对应设计模式相关的东西还是处于懵懂状态,这次下定决心好好的学习一下,所以做一个笔记用来督促自己。 资料收集与以下网站,如有冒犯,烦请告知https://www.runoob.com/design-pattern/builder-pattern.html
定义The intent of the Builder design pattern is to separate the construction of a complex object from its representation. By doing so the same construction process can create different representations. 将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示
简单说明1.当一个类的构建过于复杂的时候,就可以考虑builder模式了。
上手试一下,还是用coder的例子吧,之前写了个简易的链式模式,这次学习一下传统写法。 1.程序员基类1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 public class Coder { private String name; private String language; private String coding; private String writeBug; public void setName (String name) { this .name = name; } public void setLanguage (String language) { this .language = language; } public void setCoding (String coding) { this .coding = coding; } public void setWriteBug (String writeBug) { this .writeBug = writeBug; } public void draw () { System.out.printf("%s程序员,使用%s编程语言,%s,%s。" , name, language, coding, writeBug); } }
2. Builder类1 2 3 4 5 6 7 8 9 10 11 public abstract class Builder { public abstract void setName () ; public abstract void setLanguage () ; public abstract void setCoding () ; public abstract void setWriteBug () ; public abstract Coder getCoder () ; }
3.创建一个Android程序员Builder1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 public class AndroidBuilder extends Builder { private Coder coder = new Coder(); @Override public void setName () { coder.setName("Android" ); } @Override public void setLanguage () { coder.setLanguage("Java" ); } @Override public void setCoding () { coder.setCoding("写了三行代码" ); } @Override public void setWriteBug () { coder.setWriteBug("竟然没有bug" ); } @Override public Coder getCoder () { return coder; } }
4.指导者类1 2 3 4 5 6 7 8 9 public class CoderDirector { public void makeCoder (Builder builder) { builder.setName(); builder.setLanguage(); builder.setCoding(); builder.setWriteBug(); } }
5.使用一下1 2 3 4 5 6 7 8 9 public class Test { public static void main (String[] args) { CoderDirector director = new CoderDirector(); AndroidBuilder builder = new AndroidBuilder(); director.makeCoder(builder); Coder coder = builder.getCoder(); coder.draw(); } }
6.输出信息1 Android程序员,使用Java编程语言,写了三行代码,竟然没用bug。
一个啥也不会的Android开发,励志转型ios开发,后来放弃了。还想搞后台,后台不让!python也不同意!!!