(1)设计模式之简单工厂模式(创建型模式)

声明:以下都是博主浅薄的经验之谈,欢迎大家学习交流

官方性的话语这边就暂且不说了,说多了也未必能清楚的了解,先上类图、对于不理解类图中各条线的具体表示什么含义,博主这边也顺便写上相应的意思,助于大家理解
这里写图片描述

  • Driver.java
public interface Driver {
    public void getConnection();
}
  • MySQLDriver.java
public class MySQLDriver implements Driver{

    @Override
    public void getConnection() {
        System.out.println("获取MySQL链接....");
    }

}
  • OracleDriver.java
public class OracleDriver implements Driver {

    @Override
    public void getConnection() {
        System.out.println("获取Oracle链接.....");
    }

}
  • SQLFactory.java
public class SQLFactory {
    /**
     * 造对象
     * 
     * @param type
     * @return
     */
    public Driver getDriver(String type) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
        /*
         * 第一种方法(缺点:当Driver接口的实现类多了的话,就需要动这部分的代码。不符合设计模式的封闭原则【封闭,封闭,
         * 就是尽量少动之前写的代码了】)

        if (type.equalsIgnoreCase("MySQL")) {
            return new MySQLDriver();
        } else if (type.equalsIgnoreCase("Oracle")) {
            return new OracleDriver();
        } else {
            System.out.println("没有该类型...");
            return null;
        }
        */
        /*第二种方法*/
        return (Driver)Class.forName(type).newInstance();
    }
}
  • Main方法
package com.dyx.design.simplefactory;

/**
 * 描述: 简单工厂方法
 */
public class Main {
    public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
        SQLFactory sqlFactory = new SQLFactory();
        Driver mysqlDriver = sqlFactory.getDriver("com.dyx.design.simplefactory.MySQLDriver");
//      Driver oracleDriver = sqlFactory.getDriver("mysql");
        mysqlDriver.getConnection();
//      oracleDriver.getConnection();
    }
}

猜你喜欢

转载自blog.csdn.net/JavaMrZhang/article/details/70331990