设计模式--工厂方法模式(Factory method pattern)及应用

  • 面向对象的好处:
    • 通过封装,继承,多态把程序的耦合度降低。
    • 用设计模式可以使程序更加灵活,容易修改,且易于复用。

1. 工厂方法模式

  • Define an interface for creating an object,but let subclasses decide which class to instantiate.Factory Method lets a class defer instantiation to subclasses.
  • 定义:为创建对象定义一个接口,让子类决定实例化哪个类。工厂方法让一个类的实例化延迟到了子类。
  • 应用情景:
    • 客户类不关心使用哪个具体类,只关心该接口所提供的功能。
    • 接口有很多具体实现,或者抽象类有很多具体子类时,你可能需要为客户代码写一大串if-else逻辑来决定运行时使用哪个具体实现或者具体子类。
    • (Spring 中的依赖注入中的 IoC 容器,BeanFactory 与 ApplicationContext)
  • 代码示例:

2. Spring中的BeanFactory与 ApplacationContext 的区别

  • 参考材料:Spring 思维导图,让 Spring 不再难懂(ioc 篇)
  • 参考材料:spring-framework-reference.pdf 3.16 3.16 The BeanFactory
  • IOC中最核心的接口是Beanfactory提供IOC的高级服务,而ApplicationContext是建立在BeanFactory基础之上提供抽象的面向应用的服务。
  • Use an ApplicationContext unless you have a good reason for not doing so.
  • 设计模式--工厂方法模式(Factory method pattern)及应用

    2.1 接口BeanFactory

  • org.springframework.beans.factory.BeanFactory是The root interface for accessing a Spring bean container. @since 13 April 2001
  • 设计模式--工厂方法模式(Factory method pattern)及应用
  • 参考BeanFactory接口的方法可以看出,该工厂方法只根据特定参数返回需要的bean,用户不必关系bean的构建过程,直接获取需要的bean即可。

    2.2 接口ApplacationContext

  • org.springframework.context.ApplicationContext是Central interface to provide configuration for an application.
  • 设计模式--工厂方法模式(Factory method pattern)及应用
  • 它继承BeanFactory,也是一个工厂类接口。

3. Mybatis的SqlSessionFactory

  • 每个MyBatis应用程序主要都是使用SqlSessionFactory实例的,一个SqlSessionFactory实例可以通过SqlSessionFactoryBuilder获得。SqlSessionFactoryBuilder可以从一个xml配置文件或者一个预定义的配置类的实例获得。
  • 一个SqlSessionFactory(指上面的sqlMapper),正如它名字暗示那样,
    您可以通过它来创建一个SqlSession 实例。SqlSession 包含了所有执行数据库SQL 语句的方法。您能够直接地通过SqlSession 实例执行映射SQL 语句。
  • 设计模式--工厂方法模式(Factory method pattern)及应用
  • 该工厂类也根据相应参数获得一个SqlSession,用户不必关系SqlSession的具体创建细节。

4. Hibernate的SessionFactory

  • 会话工厂(SessionFactory):SessionFactory是ConnectionProvider的会话和客户端工厂。 它拥有数据的二级缓存(可选)。org.hibernate.SessionFactory接口提供了工厂方法来获取Session的对象。
  • Hibernate架构:
    设计模式--工厂方法模式(Factory method pattern)及应用
  • SessionFactory的方法,可以看出该工厂类为了得到Session的方法:
    设计模式--工厂方法模式(Factory method pattern)及应用
上一篇:python基础===字符串的制表,换行基础操作


下一篇:在 ubuntu 下优雅的使用 Sublime Text 3 写 Python