Facade模式的一个应用

  最近做项目,经常要用到设备控制,控制的设备各种各样,如摄像机(焦距,预置位,转动),时序电源(开,关)等等,控制方式有网络方式,串口方式,甚至是第3方的API(如海康威视的产品),客户端操作的目的也不一样,有可能只想控制某个设备的开关,也可能是多个设备的联动(如一个场景的电影模式)。更进一步,你也许需要处理设备发回来的反馈。

    功能这么多了,程序要怎么设计啊?最简单的方法就是不需要设计,用户按下什么按钮,就操作对应的设备执行什么功能,简单,容易实现。如果用极限编程,我就这么做的,用不了几分钟,任务就完成了。当然这样的代码没有重用性,也没办法与其他人合作。如果还有一点追求的话,得想想设计模式。

 这里最好的设计模式就是Facade模式。这是一个非常简单的设计模式,但它确实能解决我前面提出的所有问题。

   使用Facade模式,对客户端来说,不需要关心各种设备了,只需关心Facade类的接口。Facade类的设计也是非常简单的,就是提供各种操作的接口给客户端。

   如需控制摄像机左转,右转 ,Facade类实现 

public calss DeviceFacade{
    //摄像机左转
   public void static CameraLeft(){
        Camara camera = new Camara();
        camera.Left();
    }
    //摄像机右转
   public void static CameraRight(){
        Camera camera = new Camera ();
        camera.Right();
    }

客户端的调用:

//摄像机左转
DeviceFacade.CameraLeft();


 

转载于:https://www.cnblogs.com/zhongxg/archive/2013/04/03/2997143.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值