zoukankan      html  css  js  c++  java
  • 设计模式(一)工厂模式(补) -- 理解记忆方式

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

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

    /**
     *  简单工厂 :一个简单工厂(选择某个数据库) + 数据库接口(多个数据库实例)
     *
     *  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();
    
    
  • 相关阅读:
    JavaScript没有块级作用域
    JavaScript数据类型
    接口
    Linux用户与组别的操作
    解决 macOS 下 SSH 空闲一段时间后自动断开
    Excel 系列一 之 账户类长数字打开不截断与完全显示
    怎样花两年时间去面试一个人
    北京大学硕士学位论文模板
    Mysql: 图解 inner join、left join、right join、full outer join、union、union all的区别
    刷 LeetCode 时再学习 Python 中引用
  • 原文地址:https://www.cnblogs.com/shushengyou/p/10209961.html
Copyright © 2011-2022 走看看