zoukankan      html  css  js  c++  java
  • 简易的设计模式——门面模式

    定义

    门面模式也称外观模式,是一种常用的封装的模式。要求一个子系统的外部与内部的通信必须挺哥一个统一的对象进行。门面模式会提供一个高层次的接口,使得系统更容易使用。

    门面模式中的角色

    1. Facade门面角色:客户端可以调用这个角色的方法,此系统指导子系统的所有功能和责任。一般这个角色没有自己的业务逻辑,只是一个委托类。
    2. subsystem子系统角色:可以同时有一个或多个子系统。每个子系统都不是单独的类,而是一个类的集合。

    代码实现

    子系统A

    public class A {
        public void doSomething(){
            System.out.println("class A");
        }
    }
    

    子系统B

    public class B {
        public void doSomething(){
            System.out.println("class B");
        }
    }
    

    子系统C

    public class C {
        public void doSomething(){
            System.out.println("class C");
        }
    }
    
    

    门面 Facade.java

    public class Facade {
        private A a = new A();
        private B b = new B();
        private C c = new C();
        public void methodA(){
            this.a.doSomething();
        }
        public void methodB(){
            this.b.doSomething();
        }
        public void methodC(){
            this.c.doSomething();
        }
    }
    

    门面模式的优点

    • 减少系统的相互依赖:外部系统不会直接访问到子系统,而是访问门面。
    • 提高了灵活性:子系统内部的业务无论如何变化,只要不影响到门面对象。
    • 提高系统的安全性:可以有选择地开放一些功能到门面对象上供客户端使用。

    门面模式的缺点

    门面模式的最大缺点是不符合开闭原则。

    门面模式的使用原则

    • 为复杂的模块或子系统提供一个外部访问的接口。
    • 子系统相对独立——外界只需要调用门面对象上的方法。
    • 预防低水平人员带来的风险扩散。
  • 相关阅读:
    三次请求(读-改-读)引出nibernate 一级缓存
    算法竞赛入门经典第一、二章摘记
    uva 10905 Children's Game
    uva 11205 The broken pedometer
    uva 10160 Servicing stations
    uva 208 Firetruck
    uva 167 The Sultan's Successors
    zoj 1016 Parencodings
    uva 307 Sticks
    uva 216 Getting in Line
  • 原文地址:https://www.cnblogs.com/whthomas/p/4425847.html
Copyright © 2011-2022 走看看