zoukankan      html  css  js  c++  java
  • 外观模式(Facde)【设计模式】

    定义:为子系统中的一组接口提供一个一致的界面,Fcade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
    外观模式(Facade pattern),是软件工程中常用的一种软件设计模式,它为子系统中的一组接口提供一个统一的高层接口,使得子系统更容易使用。”
     
     
    外观模式的实现:外观模式就是通过引入一个外观类(Facade),这个类里面定义客户端想要的简单的方法,然后,再这些方法的实现里面,有外观类再去分别调用子系统内部的多个模块来实现功能,从而让客户端变得简单。最后,客户端只需要和外观类交互就可以了。
    与子系统的交互细节被封装到外观类中,这样客户端就和子系统完全解耦,客户端只和外观类通信,只关注外观类对外提供的接口。外观类对外提供一个高层的,容易使用的接口。
    示意图:
     
     
    应用场景:
    为一个复杂的子系统提供一个简单的接口,供客户端使用。客户端,不用去理解复杂子系统。只要有这种需求的,都可以使用外观模式来解决。
     
     
    例子:

    这是一个抽象的示例。一个客户“you”通过外观接口“computer”获取计算机内部复杂的系统信息

    /* Complex parts */
     
    class CPU {
            public void freeze() { ... }
            public void jump(long position) { ... }
            public void execute() { ... }}
     
    class Memory {
            public void load(long position, byte[] data) {
                    ...
            }}
     
    class HardDrive {
            public byte[] read(long lba, int size) {
                    ...
            }}
     
    /* Façade */
     
    class Computer {
            public void startComputer() {
                    cpu.freeze();
                    memory.load(BOOT_ADDRESS, hardDrive.read(BOOT_SECTOR, SECTOR_SIZE));
                    cpu.jump(BOOT_ADDRESS);
                    cpu.execute();
            }}
     
    /* Client */
     
    class You {
            public static void main(String[] args) {
                    Computer facade = new Computer();
                    facade.startComputer();
            }}
     
  • 相关阅读:
    Castle实践1-Castle IOC容器剖析
    Castle实践-开篇
    界面逻辑和业务逻辑分离的重要性
    Castle实践4-Automatic Transaction Management Facility
    Castle实践2-Startable Facility
    世事无常....
    手动配置oracle客户端的方法
    Excel.Application 和 打印机 :)
    流水如斯...
    SourceControl
  • 原文地址:https://www.cnblogs.com/ttylinux/p/4579842.html
Copyright © 2011-2022 走看看