创建型模式之建造者模式

建造者模式

构建一个复杂的产品。分离了对象子组件的单独构造(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();
		
		
	}
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值