創建型模式之建造者模式

建造者模式

構建一個複雜的產品。分離了對象子組件的單獨構造(Builder來負責,可以用工廠模式生產組件)和組裝(Director來負責),可以構造出複雜的對象,實現了構造和組裝的解耦。不同的構造器和不同的組裝相互搭配,做出不同的對象。

各個組件:

Class Screen{…}
class Battery{…}
class Mainboard{…}
public class Iphone {
	private Screen screen;
	private Mainboard mainboard;
	private Battery battery;
	
	
	public void start() {
		System.out.println("開機....");
		System.out.println("Happy中....");
	}
	
	public Screen getScreen() {
		return screen;
	}
	public void setScreen(Screen screen) {
		this.screen = screen;
	}
	public Mainboard getMainboard() {
		return mainboard;
	}
	public void setMainboard(Mainboard mainboard) {
		this.mainboard = mainboard;
	}
	public Battery getBattery() {
		return battery;
	}
	public void setBattery(Battery battery) {
		this.battery = battery;
	}
	
}

手機實體:

public class Iphone {
	private Screen screen;
	private Mainboard mainboard;
	private Battery battery;
	
	
	public void start() {
		System.out.println("開機....");
		System.out.println("Happy中....");
	}
	
	public Screen getScreen() {
		return screen;
	}
	public void setScreen(Screen screen) {
		this.screen = screen;
	}
	public Mainboard getMainboard() {
		return mainboard;
	}
	public void setMainboard(Mainboard mainboard) {
		this.mainboard = mainboard;
	}
	public Battery getBattery() {
		return battery;
	}
	public void setBattery(Battery battery) {
		this.battery = battery;
	}
	
}

生產組件:

/**
 * 生產組件
 * @author Administrator
 *
 */
public interface IphoneBuilder {
	Screen builderScreen();
	Mainboard builderMainboard();
	Battery builderBattery();
}

構建小米組件,可以通過工廠模式獲得這些組件:

/**
 * 構建小米組件,可以通過工廠模式獲得這些組件
 * @author Administrator
 *
 */
public class MiIphoneBuilder implements IphoneBuilder {

	@Override
	public Screen builderScreen() {
		// TODO 自動生成的方法存根
		System.out.println("小米屏幕構建完成");
		return new Screen("小米屏幕");
	}

	@Override
	public Mainboard builderMainboard() {
		// TODO 自動生成的方法存根
		System.out.println("小米主板構建完成");
		return new Mainboard("小米主板");
	}

	@Override
	public Battery builderBattery() {
		// TODO 自動生成的方法存根
		System.out.println("小電池構建完成");
		return new Battery("小米電池");
	}

}

組裝手機:

public interface IphoneDirector {
	/**
	 * 組裝手機
	 * @return
	 */
	Iphone directorIphone();
}

public class MiIphoneDirector implements IphoneDirector {
	private IphoneBuilder builder;
	
	public MiIphoneDirector() {
		builder=new MiIphoneBuilder();
	}

	@Override
	public Iphone directorIphone() {
		// TODO 自動生成的方法存根
		Battery battery = builder.builderBattery();
		Mainboard mainboard = builder.builderMainboard();
		Screen screen = builder.builderScreen();
		Iphone iphone=new Iphone();
		iphone.setBattery(battery);
		iphone.setMainboard(mainboard);
		iphone.setScreen(screen);
		return iphone;
	}

}


public class Client {
	public static void main(String[] args) {
		IphoneDirector director=new MiIphoneDirector();
		Iphone miiphone = director.directorIphone();
		System.out.println(miiphone.getBattery().getName());
		miiphone.start();
		
		
	}
}

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章