-
抽象工厂模式类图查看全部
-
一,工厂方法和抽象工厂方法的对比: 1)工厂模式是一种极端情况下的抽象工厂模式,通过前面的类图和代码实现我们可以看到这样一个对比,而抽象工厂模式可以看成是工厂模式的推广, 2)工厂模式用来创建一个产品的等级结构,而抽象工厂模式是用来创建多个产品的等级结构, 3)工厂模式只有一个抽象产品类,而抽象工厂模式有多个抽象产品类,总之就是单一对多个产品的这种对比。 二,工厂模式帮助我们实现了什么呢? 1)系统可以在不修改具体工厂角色的情况下引进新的产品, 2)客户端不必关系对象如何去创建,明确了职责,对象具体的创建交给了具体的产品,product1,product2,客户端只要告诉工厂我需要哪一,product1还是product2,它们具体是怎么创建的,怎么组合的,都交给了具体的产品product1,product2 3)更好的理解面向对象的原则,面向接口编程,而不是面向实现编程。 那我们整体的工厂模式就是这样一个原则。 三,工厂模式适用于哪些场景呢? 1)一个系统应当不依赖于产品类实例被创立,组成和表示的细节,就是说这个产品如何被创建,组成和表现,我们都归结到具体的产品是如何实现上去了,与前端的client,和中端的factory都是没有关系的, 2)这个系统的产品至少有一个产品族,工厂方法模式就是一个产品族,它是最简单的一个等级, 3)同属于同一个产品族的产品是设计成在一起使用的,这是毋庸置疑的,同属于一个系列的产品,就是在一起的, 4)不同的产品以一系列的接口的面貌出现,从未使系统不依赖于接口实现的细节,我们都是面向接口编程的,不是面向实现编程的,查看全部
-
我们通过代码认识工厂方法和抽象工厂方法,在现实的项目中,经常用到的组件和API都有工厂方法模式的体现 1,JDBC。连接数据库,访问数据库经常用到的,JDBC是执行SQL语句的API,JDBC可以为多种数据库提供统一的访问,它的实现过程: 1),首先是客户端client,到一个数据操作工厂,接着调用接口,返回相应的driver,有db2,mysql,oracle,sqlserver这几种常见的数据库,它可以平行扩展,它可以有很多种,这样就提供了统一的访问接口,这样客户端需要哪一种,告诉数据操作工厂就可以了,就是具体需要由客户端决定,这就是典型的工厂方法。 2,接下来看spring beanfactory,这是非常有名的工具,我们知道spring容器是一个控制反转,主要作用是生成bean,管理bean,从工厂模式来看,spring beanfactory就是生产bean,然后提供给客户端。 来看一下bean实例化的过程: 1)调用bena的默认构造方式生成bean的实例,暂称为instance1,如果在bean配置文件中注入了bean的属性,则在instance1基础上进行属性注入形成instance2,这种注入是覆盖性的,如果bean实现了InitializingBean接口,则调用afterPropertiesSet()方法,来改变或者操作instance2,得到instance3。其中:InitializingBean是spring提供的一个初始化bean的类,如果实现了这个类,则必须实现afterPropertiesSet()方法,接下来,如果bean的配置文件中指定了inti-method="init"属性,又会调用一个初始化方法,则在instance3的基础上又会进行一些改变,编程instance4.查看全部
-
功能虽然实现了,但是代码有缺陷: 我们每来一个新的发型,我们都需要建一个新的hair,而且我们要在客户端显示的调用,这样的代码既不利于维护,也不利于管理,为了解决这个问题,我们需要建一个hairFactory,对发型进行统一的管理。查看全部
-
比较总结查看全部
-
抽象工厂模式类图查看全部
-
工厂方法模式类图查看全部
-
工厂模式与抽象工厂模式的区别查看全部
-
什么是工厂模式?查看全部
-
springbean的实例化的过程查看全部
-
spring beanfactory查看全部
-
模型类图查看全部
-
适用工厂模式的场景查看全部
-
工厂模式的意图查看全部
-
工厂模式的概念查看全部
举报
0/150
提交
取消