Separate the construction of a complex object from its representation so that the same construction process can create different representations.
将一个复杂对象的构建与它的表示分离,使同样的构建过程可以创建不同的表示。
何时使用:
当系统准备为用户提供一个内部结构复杂的对象,而且在构造方法中编写创建该对象的代码无法满足用户需求时,就可以使用模式老构造这样的对象。 当某些系统要求对象的构造过程必须独立于创建该对象的类时。
优点:
模式将对象的构造过程封装在具体的中,用户使用不同的具体就可以得到该对象的不同表示。 模式将对象的构造过程从创建该对象的类中分离出来,使用户无须了解该对象的具体组件。 可以更加精细有效的控制对象的构造过程。将对象的构造过程分解成若干步骤,这就是程序可以更加精细,有效的控制整个对象的构造。 模式将对象的构造过程与创建该对象类解耦,是对象的创建更加灵活有弹性。 当增加新的具体的是,不必修改指挥者的代码,即该模式满足开-闭原则。
模式的重心在于分离构建算法和具体的构造实现,从而使构建算法可以重用。
比如我们要得到一个日期,可以有不同的式,然后我们就使用不同的来实现。
首先是这个类(产品):
//产品public class MyDate { String date;}
然后就是抽象,描述的行为:
//抽象public intece IDateBuilder { IDateBuilder buildDate(int y,int m,int d); String date();}
接下来是具体,一个以“-”分割年月日,另一个使用空:
//具体public class DateBuilder1 implements IDateBuilder{ private MyDate myDate; public DateBuilder1(MyDate myDate){ this.myDate = myDate; } @Override public IDateBuilder buildDate(int y, int m, int d) { myDate.date = y"-"m"-"d; return this; } @Override public String date() { return myDate.date; }}//具体public class DateBuilder2 implements IDateBuilder{ private MyDate myDate; public DateBuilder2(MyDate myDate){ this.myDate = myDate; } @Override public IDateBuilder buildDate(int y, int m, int d) { myDate.date = y" "m" "d; return this; } @Override public String date() { return myDate.date; }}
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-33893-9.html
普京也就是在叙利亚耍耍而已
我们能不能少替对方考虑
#吴亦凡##挑战者吴亦凡#