zoukankan      html  css  js  c++  java
  • 设计模式-外观模式(facade)

    基本概念

    外观模式的作用:

    • 松散耦合,外观模式松散了客户端与子系统的耦合关系,让子系统内部的模块能更容易扩展和维护。

    • 简单易用,外观模式让子系统更加易用,客户端不再需要了解子系统内部的实现,也不需要跟众多子系统内部的模块进行交互,只需要跟门面类交互就可以了。

    • 更好的划分访问层次-通过合理使用 Facade,可以帮助我们更好地划分访问的层次。有些方法是对系统外的,有些方法是系统内部使用的。把需要暴露给外部的功能集中到门面中,这样既方便客户端使用,也很好地隐藏了内部的细节。

    外观模式的角色:

    • SubSystem,子系统角色。表示一个系统的子系统或模块。

    • Facade,外观角色,客户端通过操作外观角色从而达到控制子系统角色的目的。对于客户端来说,外观角色好比一道屏障,对客户端屏蔽了子系统的具体实现。

    实例探究

    假设一台电脑,它包含了 CPU(处理器),Memory(内存) ,Disk(硬盘)这几个部件,若想要启动电脑,则先后必须启动 CPU、Memory、Disk。关闭也是如此。

    但是实际上我们在电脑开/关机时根本不需要去操作这些组件,因为电脑已经帮我们都处理好了,并隐藏了这些东西。

    这些组件好比子系统角色,而电脑就是一个外观角色。

    • SubSystem,子系统角色。
    public class CPU {   
        public void startup(){  
            System.out.println("cpu startup!");  
        }  
        public void shutdown(){  
            System.out.println("cpu shutdown!");  
        }  
    }
    
    public class Memory {    
        public void startup(){  
            System.out.println("memory startup!");  
        }  
        public void shutdown(){  
            System.out.println("memory shutdown!");  
        }  
    } 
    
    public class Disk {  
        public void startup(){  
            System.out.println("disk startup!");  
        }  
        public void shutdown(){  
            System.out.println("disk shutdown!");  
        }  
    }     
    
    
    • Facade,外观角色。
    public class Computer {  
        private CPU cpu;  
        private Memory memory;  
        private Disk disk;  
    
        public Computer(){  
            cpu = new CPU();  
            memory = new Memory();  
            disk = new Disk();  
        }  
    
        public void startup(){  
            System.out.println("start the computer!");  
            cpu.startup();  
            memory.startup();  
            disk.startup();  
            System.out.println("start computer finished!");  
        }  
    
        public void shutdown(){  
            System.out.println("begin to close the computer!");  
            cpu.shutdown();  
            memory.shutdown();  
            disk.shutdown();  
            System.out.println("computer closed!");  
        }  
    }  
    
    

    具体调用如下:

    Computer computer = new Computer();  
    computer.startup();  
    computer.shutdown();  
    

    转载自:
    https://blog.csdn.net/u012420654/article/details/60332995
    参考
    http://www.cnblogs.com/maowang1991/archive/2013/04/15/3023236.html
    http://blog.csdn.net/jason0539/article/details/22775311

  • 相关阅读:
    Hashtable,挺爽的一个东西,大家都用烂了吧,我再画蛇添足一下。
    今天你写控件了吗?ASP.net控件开发系列(八)
    Attribute在运行期赋值?
    整几个题给大家玩玩,看看“下盘功夫”怎样
    当stringFormat碰上{和}
    一句SQL语句解决倒序数据分页提取
    C#扩展一般用于linq
    字符串转日期类型
    Dispatcher与UI线程交互
    圆形进度条
  • 原文地址:https://www.cnblogs.com/DiZhang/p/12544851.html
Copyright © 2011-2022 走看看