设计模式(一)工厂模式(补) -- 理解记忆方式

  设计,是为了更好的应对变化。

  思考记忆方向:此模式是不是 提取了抽象、分离了具体、依赖于抽象、封装了具体

 

/**
 *  简单工厂 :一个简单工厂(选择某个数据库) + 数据库接口(多个数据库实例)
 *
 *  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();

 


posted on 2019-01-02 18:02  书生游  阅读(209)  评论(0编辑  收藏  举报