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();


 

posted on 2013-04-03 02:06  钟湘光  阅读(340)  评论(2编辑  收藏  举报

导航