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();
            }}
     
  • 相关阅读:
    android自定义View之NotePad出鞘记
    一个电商项目的Web服务化改造
    一个电商项目的Web服务化改造
    POJ 2886 Who Gets the Most Candies?
    POJ 2392 Space Elevator
    POJ 1276 Cash Machine
    POJ 2063 Investment
    CodeForces 159c String Manipulation 1.0
    Gym
    FZU 1921 栀子花开
  • 原文地址:https://www.cnblogs.com/ttylinux/p/4579842.html
Copyright © 2011-2022 走看看