设计模式(一)工厂模式(补) -- 理解记忆方式
设计,是为了更好的应对变化。
思考记忆方向:此模式是不是 提取了抽象、分离了具体、依赖于抽象、封装了具体
/** * 简单工厂 :一个简单工厂(选择某个数据库) + 数据库接口(多个数据库实例) * * 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();