⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 f_builder.java

📁 超好的设计模式Java事例程序
💻 JAVA
字号:
/*
 BUILDER—MM最爱听的就是“我爱你”这句话了,见到不同地方的MM,要能够用她们的方言跟她说这句话哦,我有一个多种语言翻译机,上面每种语言都有一个按键,见到MM我只要按对应的键,它就能够用相应的语言说出“我爱你”这句话了,国外的MM也可以轻松搞掂,这就是我的“我爱你”builder。(这一定比美军在伊拉克用的翻译机好卖) 

  建造模式:将产品的内部表象和产品的生成过程分割开来,从而使一个建造过程生成具有不同的内部表象的产品对象。建造模式使得产品内部表象可以独立的变化,客户不必知道产品内部组成的细节。建造模式可以强制实行一种分步骤进行的建造过程。 
1、建造者模式主要用于“分步骤构建一个复杂的对象”,在这其中“分步骤”是一个稳定的算法,而复杂对象的各个部分则经常变化。
2、产品不需要抽象类,特别是由于创建对象的算法复杂而导致使用此模式的情况下或者此模式应用于产品的生成过程,其最终结果可能差异很大,不大可能提炼出一个抽象产品类。
3、创建者中的创建子部件的接口方法不是抽象方法而是空方法,不进行任何操作,具体的创建者只需要覆盖需要的方法就可以,但是这也不是绝对的,特别是类似文本转换这种情况下,缺省的方法将输入原封不动的输出是合理的缺省操作。
4、前面我们说过的抽象工厂模式(Abtract Factory)解决“系列对象”的需求变化,Builder模式解决“对象部分”的需求变化,建造者模式常和组合模式(Composite Pattern)结合使用。

适用性
1、需要生成的产品对象有复杂的内部结构。
2、需要生成的产品对象的属性相互依赖,建造者模式可以强迫生成顺序。
3、在对象创建过程中会使用到系统中的一些其它对象,这些对象在产品对象的创建过程中不易得到。
 */
 
public class F_Builder{
	public static void main(String[] args) {
		CompositionBuilder cb=new CompositionBuilder();
 		Scrivener s=new Scrivener(cb);
 		System.out.println(s.write());
 	}
}
abstract class Builder {
    public abstract void makeTitle(String title);
    public abstract void makeHead(String head);
    public abstract void makeBody(String body);
    public abstract void makeLast(String last);
    public abstract String getResult();
}

class CompositionBuilder extends Builder{
	String content="";
	public void makeTitle(String title){
		content+="《"+title+"》";
	}
    public void makeHead(String head){
    	content+="\n"+head+"\n";
    }
    public void makeBody(String body){
    	content+="\n--"+body+"--\n";
    }
    public void makeLast(String last){
    	content+=last+".";
    }
    public String getResult(){
    	return content;
    }
}

class Scrivener {
	Builder builder;
	public Scrivener(Builder builder){
		this.builder=builder;
	}
	public String write(){
		builder.makeTitle("春游小记");
		builder.makeHead("2007春游小品");
		builder.makeBody("大家到此一游");
		builder.makeLast("好玩");
		return builder.getResult();
		
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -