软件体系结构与设计模式之外观模式的应用

实验目的

  1. 掌握外观模式(Facade)的特点
  2. 分析具体问题,使用外观模式进行设计。

实验环境

Eclipse

实验内容

电源总开关
现在考察一个电源总开关的例子,以便进一步说明外观模式。为了使用方便,一个电源总开关可以控制四盏灯、一个风扇、一台空调和一台电视机的启动和关闭。通过该电源总开关可以同时控制上述所有电器设备,使用外观模式设计该系统。
JAVA语言实现 (或C#控制台应用程序实现)。绘制该模式的UML图。

模式UML图

在这里插入图片描述

模式代码(Java语言实现)

当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

package sy7;

public class GeneralSwitchFacade {
	 private Light lights[]=new Light[4];
	     private Fan fan;
	     private AirConditioner ac;
	     private Television tv;
	     
	     public GeneralSwitchFacade()
	     {
	         lights[0]=new Light("左前");
	         lights[1]=new Light("右前");
	         lights[2]=new Light("左后");
	         lights[3]=new Light("右后");    
	         fan=new Fan();
	         ac=new AirConditioner();
	         tv=new Television();
	     }
	     
	     public void on()
	     {
	         lights[0].on();
	         lights[1].on();
	         lights[2].on();
	         lights[3].on();
	         fan.on();
	         ac.on();
	         tv.on();
	     } 
	         
	     public void off()
	     {
	         lights[0].off();
	         lights[1].off();
	         lights[2].off();
	         lights[3].off();
	         fan.off();
	          ac.off();
	          tv.off();        
	     }   
}


public class Light {
	 private String position;
	      
	      public Light(String position)
	      {
	          this.position=position;    
	      }
	      
	      public void on()
	      {
	          System.out.println(this.position + "灯打开!");
	      }
	      
	      public void off()
	      {
	          System.out.println(this.position + "灯关闭!");    
	      }
}

public class Fan {
	 public void on()
	      {
	          System.out.println("风扇打开!");    
	      }
	      
	      public void off()
	      {
	          System.out.println("风扇关闭!");        
	      }
}

public class AirConditioner {
	public void on()
    {
        System.out.println("空调打开!");    
    }
    
    public void off()
    {
        System.out.println("空调关闭!");        
    }
}

public class Television {
	public void on()
    {
        System.out.println("电视打开!");    
    }
    
    public void off()
    {
        System.out.println("电视关闭!");        
    }
}

public class Client {
	 public static void main(String args[])
	      {
	          GeneralSwitchFacade gsf=new GeneralSwitchFacade();
	          gsf.on();
	          System.out.println("-----------------------");    
	          gsf.off();
	      }
}

运行截图

在这里插入图片描述

在这里插入图片描述

实验小结

外观模式主要适用于以下情况:
1.当需要为一个复杂的子系统提供一个简单的接口时
2.当客户端与抽象类的实现部分存在很大的依赖性是
3.当需要构建一个层次结构的子系统的时候。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值