HeadFirst设计模式_读书笔记_007_外观模式

外观模式:提供了一个统一的接口,用来访问子系统中的一群接口或者一个很大的接口,总之外观模式的目的是简化并统一其他的接口。与适配器不同的是,它不会修改其他的接口,只是将客户从一个复杂的子系统中解耦出来。



 

public class Airconditioner {
	int tempture;
	
	public void turnOn()
	{
		System.out.println("开空调");
	}
	
	public void turnOff()
	{
		System.out.println("关掉空调");
	}
	
	public void setTempture(int tempture)
	{
		this.tempture = tempture;
	}

}
public class Fridge {
	int level ; 
	public void turnOn()
	{
		System.out.println("冰箱插上电源");
	}
	
	public void turnOff()
	{
		System.out.println("关掉冰箱");
	}
	
	public void setLevel(int level)
	{
		this.level = level;
	}
	
	public int getLevel()
	{
		return level;
	}
}
public class TV {
	
	public void turnOn()
	{
		System.out.println("打开电视");
	}
	
	public void turnOff()
	{
		System.out.println("关掉电视");
	}
	
	public void showCCTV()
	{
		System.out.println("收看央视新闻");
	}

}
public class  HomeElectronicsController {
	TV tv;
	Fridge fridge;
	Airconditioner airconfitioner;
	public HomeElectronicsController(TV tv, Fridge fridge, Airconditioner airconditioner)
	{
		this.tv = tv;
		this.fridge = fridge;
		this.airconfitioner = airconditioner;
	}
	public void turnOnAll()
	{
		tv.turnOn();
		tv.showCCTV();
		fridge.setLevel(3);
		airconfitioner.setTempture(28);
	}
	
	public void turnOffAll()
	{
		tv.turnOff();
		fridge.turnOff();
		airconfitioner.turnOff();
	}

}

当用户需要打开所有家电的时候,只需要调用HomeElectronicsController的turnOn()方法,而无需调用各个家电,但是外观模式并没有改变各个家电的接口,只是简化了用户的访问。如果用户需要访问子系统中的各个组件,还是可以直接访问的。这是外观模式和适配器模式最大的区别。

猜你喜欢

转载自afra-liu.iteye.com/blog/2366255