• 门面模式


    上一篇的java标准日志出现了日志门面,肯定有人会问什么是门面?


    1. 门面模式(Facade Pattern)

    门面提供统一的接口去访问多个子系统的不同接口,它为子系统中的一组接口提供一个统一的高层接口,使得子系统更容易使用。简单地说:通过门面就可使用该系统所有的功能,而不用接触背后复杂的关系


    门面模式的组成:

    • Client(客户)
    • Facade(门面角色)
    • Subsystem(子系统)




    2. 流程

    这里举例看电影的场景,以前看电影需要去电影院看上映列表,然后买电影票,最后买爆米花,客户需接触三个流程。

    现通过手机门面我们可将上面三步完成,而只需接触手机这个门面即可


    2.1 Subsystem

    // 观影系统
    public class MoviesSystem {
        public void listMovies() {
            System.out.println("上映列表");
        }
        // other funtion ...
    }
    

    // 购票系统
    public class TicketSystem {
        public void buyTicket() {
            System.out.println("买电影票");
        }
        public void refundTicket() {
            System.out.println("退电影票");
        }
        // other funtion ...
    }
    

    // 服务系统
    public class ServiceSystem {
        public void buyPopCorn() {
            System.out.println("买爆米花");
        }
        public void buyCola() {
            System.out.println("买可乐");
        }
        // other funtion ...
    }
    


    2.1 Facade

    public class Facade {
        MoviesSystem moviesSystem = new MoviesSystem();
        TicketSystem ticketSystem = new TicketSystem();
        ServiceSystem serviceSystem = new ServiceSystem();
    
        public void watchMovie(){
            moviesSystem.listMovies();
            ticketSystem.buyTicket();
            serviceSystem.buyCola();
        }
    }
    


    2.3 Client

    public class Client {
        public static void main(String[] args) {
            Facade facade = new Facade();
            facade.watchMovie();
        }
    }
    
    // 观影列表
    // 买电影票
    // 买可乐
    




    3. 优势

    • 门面让客户和子系统松耦合,所以子系统更容易扩展和维护
    • 门面让子系统有统一上层接口,所以客户容易使用,也可自由更改子系统实现(参考日志门面)


  • 相关阅读:
    初创团队的技术选择
    敏捷大数据流程
    深入分析Java Web技术内幕(修订版)
    重构大数据统计
    Robot Framework学习笔记(十一)------ 分层设计
    Robot Framework学习笔记(十)------Selenium2Library库
    Robot Framework学习笔记(九)------创建资源和用户关键字
    Robot Framework学习笔记(八)------ride标签使用
    robotframework学习笔记(七)------筛选执行用例
    chromedriver与chrome版本映射列表
  • 原文地址:https://www.cnblogs.com/Howlet/p/15057145.html
Copyright © 2020-2023  润新知