设计,是为了更好的应对变化。
思考记忆方向:此模式是不是 提取了抽象、分离了具体、依赖于抽象、封装了具体
/**
* 简单工厂 :一个简单工厂(选择某个数据库) + 数据库接口(多个数据库实例)
*
* IFactory
* MySqlFactory OracleFactory SqlServerFactory
*
* SimpleFactory(switch控制选哪个工厂实例)
*/
SimpleFactory sf = new SimpleFactory();
IFactory f = sf.getFactory("mysql"); //创建MySqlFactory实例
/**
* 工厂模式 :定义一个用于创建对象的接口,让子类决定实例化哪一个类,它使一个类的实例化延迟到其子类
* 工厂模式 :一个工厂接口(多个数据库实例) + 一个表接口(同表多个实例)
*
* IUesr
* MySqlUser OracleUser SqlServerUser
*
* IFactory
* MySqlFactory OracleFactory SqlServerFactory (每个工厂实例都生成Uesr)
*/
IFactory f1 = new MySqlFactory(); //确定数据库实例
IUser user = f1.createUser(); //创建User表
user.insert(); //执行语句
/**
* 抽象工厂 : 提供一个创建一系列或相关依赖对象的接口,而无须指定他们具体的类
* 抽象工厂 : 一个抽象工厂接口 + 多个表接口
*
* IUesr IDepartment
* MySqlUser OracleUser SqlServerUser MySqlDepartment OracleDepartment SqlServerDepartment
*
* IFactory
* MySqlFactory OracleFactory SqlServerFactory (每个工厂都生成Uesr和Department)
*/
IFactory f2 = new MySqlFactory(); //确定数据库实例
IUser user2 = f2.createUser(); //已与具体的数据库访问解除了耦合
user2.insert();
IDepartment department = f2.createDepartment(); //已与具体的数据库访问解除了耦合
department.insert();