欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

HeadFirst设计模式_读书笔记_007_外观模式 博客分类: 2.Java设计模式 java外观模式

程序员文章站 2024-03-18 13:18:40
...

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


HeadFirst设计模式_读书笔记_007_外观模式
            
    
    博客分类: 2.Java设计模式 java外观模式
 

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()方法,而无需调用各个家电,但是外观模式并没有改变各个家电的接口,只是简化了用户的访问。如果用户需要访问子系统中的各个组件,还是可以直接访问的。这是外观模式和适配器模式最大的区别。

  • HeadFirst设计模式_读书笔记_007_外观模式
            
    
    博客分类: 2.Java设计模式 java外观模式
  • 大小: 3.4 KB
相关标签: java 外观模式