IoC模式和factory method模式的一些区别

原创 2004年09月20日 18:46:00

2004年第2期的《程序员》杂志里,有一篇martin flower的关于Ioc的文章。拜读过martin的《refactor》,所以关于他的文章当然要细细品味。不过在martin用来说明IoC的例子,我觉得似乎很困惑。我完全可以用一个factory method来代替IoC实现这个例子。所以不明白这两者之间有什么具体区别,还是说工厂的方法就是实现IoC的一个具体实现。

后来在jdon上看到bq的文章,正好是我需要的。

 

假设有两个类B 和 C:B作为调用者,C是被调用者,在B代码中存在对C的调用:

public class B{
   private C comp;
  ......
}

 

当客户端调用B时,分别使用工厂模式和Ioc有不同的特点和区别:

  主要区别体现在B类的代码,如果使用Ioc,在B类代码中将不需要嵌入任何工厂模式等的代码,因为这些工厂模式其实还是与C有些间接的联系,这样,使用Ioc彻底解耦了B和C之间的联系。

  使用Ioc带来的代价是:需要在客户端或其它某处进行B和C之间联系的组装。

  所以,Ioc并没有消除B和C之间这样的联系,只是转移了这种联系。

Spring 通过工厂方法(Factory Method)来配置bean

Spring 通过工厂方法(Factory Method)来配置bean在Spring的世界中, 我们通常会利用bean config file 或者 annotation注解方式来配置bean.在第...
  • nvd11
  • nvd11
  • 2016年05月31日 00:26
  • 15773

设计模式(创建型)之简单工厂模式(Simple Factory Pattern)

PS一句:最终还是选择CSDN来整理发表这几年的知识点,该文章平行迁移到CSDN。因为CSDN也支持MarkDown语法了,牛逼啊!概述简单工厂模式(Simple Factory Pattern)又叫...
  • yanbober
  • yanbober
  • 2015年04月27日 16:35
  • 2742

python实现工厂模式

Factory Method ( 3 . 3 ):定义一个用于创建对象的接口,让子类决定将哪一个类实例化。 Factory Method使一个类的实例化延迟到其子类。 ...
  • huaweitman
  • huaweitman
  • 2013年07月20日 17:22
  • 4192

Factory Method设计模式

  • 2013年07月25日 16:11
  • 24KB
  • 下载

c#面向对象设计模式之factory method

  • 2009年09月10日 19:51
  • 10.09MB
  • 下载

C++必知必会之(30)Factory Method模式

一个高级设计通常要求基于一个现有对象类型来创建一个“适当”类型的对象。 例如:我们可能拥有一个指向某种类型的Employee对象的指针或引用,现在需要...
  • woshibendangao
  • woshibendangao
  • 2013年12月10日 21:08
  • 694

简单工程模式(Factory Method Pattern)

简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简...
  • u013553804
  • u013553804
  • 2017年12月31日 10:52
  • 15

工厂方法模式(Factory Method Pattern)理论篇

本文编辑整理自:   http://danielzzu.blog.163.com/blog/static/11851530420112311303240/ http://www.java63.co...
  • hudashi
  • hudashi
  • 2012年06月05日 22:15
  • 910

工厂方法模式 Factory Method

Factory Method (工厂方法)          四人团的说法:定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。...
  • MEIYOUDAO_JIUSHIDAO
  • MEIYOUDAO_JIUSHIDAO
  • 2015年04月16日 10:03
  • 603

设计模式之:工厂方法(Factory Method)

在简单工厂里,我们用简单工厂类来产生子类对象,但是如果我们现在要增加一个具体产品,那么我们就得修改简单工厂,这就违反了“对扩展开放”原则。...
  • szwang1
  • szwang1
  • 2013年08月08日 17:24
  • 703
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:IoC模式和factory method模式的一些区别
举报原因:
原因补充:

(最多只允许输入30个字)