美文网首页
Facade Design Pattern

Facade Design Pattern

作者: zheting | 来源:发表于2018-03-22 08:46 被阅读6次
    package com.sheting.design.pattern.demo5;
    
    import java.sql.Connection;
    
    /**
     * @Author SheTing
     * @Time 2018/3/22 8:26
     */
    public class MySqlHelper {
    
        public static Connection getMySqlDBConnection() {
            //get MySql DB connection using connection parameters
            return null;
        }
    
        public void generateMySqlPDFReport(String tableName, Connection con) {
            //get data from table and generate pdf report
        }
    
        public void generateMySqlHTMLReport(String tableName, Connection con) {
            //get data from table and generate pdf report
        }
    
    }
    
    
    package com.sheting.design.pattern.demo5;
    
    import java.sql.Connection;
    
    /**
     * @Author SheTing
     * @Time 2018/3/22 8:26
     */
    public class OracleHelper {
    
        public static Connection getOracleDBConnection(){
            //get Oracle DB connection using connection parameters
            return null;
        }
    
        public void generateOraclePDFReport(String tableName, Connection con){
            //get data from table and generate pdf report
        }
    
        public void generateOracleHTMLReport(String tableName, Connection con){
            //get data from table and generate pdf report
        }
    }
    
    
    package com.sheting.design.pattern.demo5;
    
    import java.sql.Connection;
    
    /**
     * @Author SheTing
     * @Time 2018/3/22 8:27
     */
    public class HelperFacade {
    
        public static void generateReport(DBTypes dbType, ReportTypes reportType, String tableName) {
            Connection con = null;
            switch (dbType) {
                case MYSQL:
                    con = MySqlHelper.getMySqlDBConnection();
                    MySqlHelper mySqlHelper = new MySqlHelper();
                    switch (reportType) {
                        case HTML:
                            mySqlHelper.generateMySqlHTMLReport(tableName, con);
                            break;
                        case PDF:
                            mySqlHelper.generateMySqlPDFReport(tableName, con);
                            break;
                    }
                    break;
                case ORACLE:
                    con = OracleHelper.getOracleDBConnection();
                    OracleHelper oracleHelper = new OracleHelper();
                    switch (reportType) {
                        case HTML:
                            oracleHelper.generateOracleHTMLReport(tableName, con);
                            break;
                        case PDF:
                            oracleHelper.generateOraclePDFReport(tableName, con);
                            break;
                    }
                    break;
            }
    
        }
    
        public static enum DBTypes {
            MYSQL, ORACLE;
        }
    
        public static enum ReportTypes {
            HTML, PDF;
        }
    
    }
    
    
    package com.sheting.design.pattern.demo5;
    
    import java.sql.Connection;
    
    /**
     * @Author SheTing
     * @Time 2018/3/22 8:28
     */
    public class FacadePatternTest {
    
        public static void main(String[] args) {
            String tableName = "Employee";
    
            //generating MySql HTML report and Oracle PDF report without using Facade
            Connection con = MySqlHelper.getMySqlDBConnection();
            MySqlHelper mySqlHelper = new MySqlHelper();
            mySqlHelper.generateMySqlHTMLReport(tableName, con);
    
            Connection con1 = OracleHelper.getOracleDBConnection();
            OracleHelper oracleHelper = new OracleHelper();
            oracleHelper.generateOraclePDFReport(tableName, con1);
    
            //generating MySql HTML report and Oracle PDF report using Facade
            HelperFacade.generateReport(HelperFacade.DBTypes.MYSQL, HelperFacade.ReportTypes.HTML, tableName);
            HelperFacade.generateReport(HelperFacade.DBTypes.ORACLE, HelperFacade.ReportTypes.PDF, tableName);
        }
    
    }
    
    
    门面模式应用

    SLF4J,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统。按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志System。

    相关文章

      网友评论

          本文标题:Facade Design Pattern

          本文链接:https://www.haomeiwen.com/subject/lvuoqftx.html