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

    设计模式(二)

    外观模式(Facade)

    为了解决子系统外部的客户端在使用子系统的时候,既能简单地使用这些子系统内部的模块功能,而又不用客户端去与子系统内部的多个模块交互的问题。

    为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

    外观模式就是通过引入一个外观类,在这个类里面定义客户端想要的简单的方法,然后在这些方法的实现里面,由外观类再去分别调用内部的多个模块来实现功能,从而让客户端变得简单。这样一来,客户端就只需要和外观类交互就可以了。

    package Facade;

     

    public classConfigModel {

     

            private boolean needGenPresentation = true;

            private boolean needGenBusiness = true;

            private boolean needGenDAO = true;

            public boolean isNeedGenPresentation(){

            return needGenPresentation;

            }

            public boolean isNeedGenBusiness(){

            return needGenBusiness;

            }

            public boolean isNeedGenDAO(){

            return needGenDAO;

            }

            public void setNeedGenPresentation(boolean needGenPresentation){

            this.needGenPresentation=needGenPresentation;

            }

            public void setNeedGenBusiness(boolean needGenBusiness){

            this.needGenBusiness=needGenBusiness;

            }

            public void setNeedGenDAO(boolean needGenDAO){

            this.needGenDAO=needGenDAO;

            }

    }

    package Facade;

     

    public classConfigManager {

            private static ConfigManager manager = null;

            private static ConfigModel cm = null;

            private ConfigManager(){

            //

            }

            public static ConfigManager getInstance(){

            if(manager==null){

                 manager = new ConfigManager();

                 cm new ConfigModel();

            }

            return manager;

            }

            public ConfigModel getConfigDate(){

            return cm;

            }

    }

    package Facade;

     

    public classPresentation {

           public void generate(){

           ConfigModel cm = ConfigManager.getInstance().getConfigDate();

           if(cm.isNeedGenPresentation()){

               System.out.println("Generate Presentation Layer");

           }

           }

    }

    package Facade;

     

    public classBusiness {

        public void generate(){

           ConfigModel cm = ConfigManager.getInstance().getConfigDate();

           if(cm.isNeedGenBusiness()){

               System.out.println("Generate Business Layer");

           }

       }

    }

    package Facade;

     

    public classDAO {

        public void generate(){

           ConfigModel cm = ConfigManager.getInstance().getConfigDate();

           if(cm.isNeedGenDAO()){

               System.out.println("Generate DAO Layer");

           }

       }

    }

    package Facade;

     

    public classFacade {

         publicvoidgenerate(){

          new Presentation().generate();

          new Business().generate();

          new DAO().generate();

         }

    }

    package Facade;

     

    public classClient {

        publicstaticvoidmain(String[] args){

         new Facade().generate();

        }

    }

    Output:

    Generate Presentation Layer

    Generate Business Layer

    Generate DAO Layer

  • 相关阅读:
    思考-少写代码
    app上传 那些事儿!
    vs2010 找不到本地服务器
    如何成为一名优秀得程序员
    python成功之路,Day2-判断和循环语句
    python成功之路,Day1-发展历史
    ES6学习笔记2-字符串扩展
    ES6学习笔记1-解构赋值
    数组的方法
    ES6
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3174646.html
Copyright © 2011-2022 走看看