声明:以下都是博主浅薄的经验之谈,欢迎大家学习交流
- 博主是参考这个视频进行学习总结的:
- 设计模式学习视频(点击我)
- 提取码 : 29oc
官方性的话语这边就暂且不说了,说多了也未必能清楚的了解,先上类图、对于不理解类图中各条线的具体表示什么含义,博主这边也顺便写上相应的意思,助于大家理解
- 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();
}
}
- 博主是参考这个视频进行学习总结的:
- 设计模式学习视频(点击我)
- 提取码 : ivtk