Java外观(Facade)模式

    所谓外观模式就是要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行交互。外观模式提供一个高层次的接口使得子系统更易于使用。

    相关角色:

         1.外观(Facade)角色:客户端可以调用这个角色的方法。此角色知晓相关的子系统的功能和责任。

         2.子系统角色:可以同时有一个或者多个子系统。每一个子系统都不是一个单独的类,而是一个类的集合。每一个子系统都可以被客户端直接调用,或者被外观角色调用。

    适用情况:

         1.为复杂的子系统提供一个简单的接口;

         2.客户程序与抽象类的实现部分之间存在着很大的依赖性;

         3.构建一个层次结构的子系统时,适用外观模式定义子系统中每层的入口点。

    外观模式的简单实现:

 

代码:

 

Camara.java

 

package facade;

public class Camara {
	public void turnOn()
	{
		System.out.println("开启摄像头!");
	}
	
	public void turnOff()
	{
		System.out.println("关闭摄像头!");
	}
}
 

Light.java

 

package facade;

public class Light {
	public void turnOn()
	{
		System.out.println("开灯!");
	}
	
	public void turnOff()
	{
		System.out.println("关灯!");
	}
}

 

Sensor.java

 

package facade;

public class Sensor {
	public void activate()
	{
		System.out.println("开启感应器!");
	}
	
	public void deactivate()
	{
		System.out.println("关闭感应器!");
	}
}

 

MyFacade.java

 

package facade;

public class MyFacade {
	private static Camara c1, c2;
	private static Light l1, l2, l3;
	private static Sensor s;
	
	static
	{
		c1 = new Camara();
		c2 = new Camara();
		l1 = new Light();
		l2 = new Light();
		l3 = new Light();
		s = new Sensor();
	}
	
	public static void activate()
	{
		c1.turnOn();
		c2.turnOn();
		
		l1.turnOn();
		l2.turnOn();
		l3.turnOn();
		
		s.activate();
	}
	
	public static void deactivate()
	{
		c1.turnOff();
		c2.turnOff();
		
		l1.turnOff();
		l2.turnOff();
		l3.turnOff();
		
		s.deactivate();
	}
}

 

ClientTest.java

 

package facade;

public class ClientTest {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//打开
		MyFacade.activate();
		//关闭
		MyFacade.deactivate();
	}

}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值