第十五篇:工厂模式加强概述

1:如何理解简单工厂模式?
a:通过静态方法或实例方法常见对象
b:封装对象创建过程(基于条件不同床架不同的具体产品)

2:简单工厂应用场景分析?
a:JDBC(DriverManager.getConnection(…))
b:Druid(getConnection())
c:mybatis(Configuration,…)
d:Spring(BeanFactory)

3:简单工厂中的对象角色?
a:抽象产品对象(例如SqlSession,Executor,…)
b:具体产品对象(例如DefaultSqlSession,SimpleExecutor,…)
c:具体工厂对象(例如DefaultSqlSessionFactory,Configuration,…)

4:简单工厂应用分析?
a)优势:解耦,简单
b)劣势:可扩展相对较差(创建产品对象的工厂方法不够灵活)

工厂方法模式?
1:如何理解工厂方法模式?
a)创建性模式(负责创建对象)
b)工厂模式(平时说的工厂模式就是工厂方法模式)
c)此模式的特点是基于抽象工厂扩展具体工厂然后创建产品对象
2:工厂方法模式的应用场景分析?
a)mybatis(SqlSessionFactoryBean)
b)Shiro(ShiroFilterFactoryBean)
c)Spring(DataSourceFactory,TransactionFactory)
3:工厂方法模式角色分析?
a)抽象产品(Product)
b)具体产品(ConcreteProduct)
c)抽象工厂(Factory)
d)具体工厂(ConcreteFactory)
例如:
1:mybatis中创建SqlSession对象:
SqlSession(抽象产品)
DefaultSqlSession(具体产品)
SqlSessionFactory(抽象工厂)
DefaultSqlSessionFactory(具体工厂)

2:spring整合mybatis时,SqlSessionFactory对象创建过程分析
SqlSessionFactory(抽象产品)
DefaultSqlSessionFactory(具体产品)
FactoryBean(抽象工厂)
SqlSessionFactoryBean(具体工厂)

4)工厂方法模式应用分析?
1:优势:相对于简单工厂更加灵活,更加适合创建具备等级结构的产品
2:劣势:假如每个抽象产品都对应一个具体工厂,那个工厂类可能会比较多

5)如何理解抽象工厂?
1:工厂方法模式用于创建具备一定等级结构的产品
2:抽象工厂是多个工厂方法的综合应用,因为它要同时创建具备多个一定等级结构的产品,我们可以将这些产品理解产品族
6)抽象工厂的应用场景
Spring(ClientHttpRequestFactory)了解消息头,消息体对象创建
7)抽象工厂对象角色分析?
1:抽象产品(Product)
2:具体产品(ConcreteProduct)
3:抽象工厂(Factory)
4:具体工厂(ConcreteFactory)

抽象工厂应用分析?
1:优势:工厂方法模式可能会产生很多个工厂类,基于此劣势借助抽象工厂创建产品族对象,可以减少工厂类对象的个数,从而更好节省资源
2:劣势:一旦有新的产品族诞生,这个抽象工厂扩展起来就会比较复杂

建造模式(Builder)
1)如何理解建造模式?
建造模式又称之为构建模式,通常用于构建相对比较复杂对象,
例如:
构建过程复杂
对象依赖关系复杂

2)建造模式应用场景分析?
mybatis(XmlConfigBuilder,XmlStatementBuilder)
Spring(XmlBeanDefinitionReader)

3)建造模式对象角色分析?
1:抽象建造对象角色(Builder)可能是接口,也可能是抽象类,此角色也可以省略
2:具体建造对象角色(ConcreteBuilder)
3:导演角色(Director)持有建造者对象,可以省略
4:抽象产品角色(Product)抽象产品角色,可以省略
5:具体产品角色(ConcreteProduct)具体产品角色

建造者模式应用分析?
  优势:解耦对象的应用以及对象创建,通过建造者创建复杂产品对象,尤其是基于配置文件创建对象的场景
  劣势:要构建的对象结构假如频繁变化可能导致构建者对象的设计比较复杂

你可能感兴趣的:(工厂模式加强)