浏览 1461 次
锁定老帖子 主题:工厂方法和抽象工厂
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-04-06
最初发表在这里。
工厂方法的使用者可能会面临两种情况:第一种情况是对于某个产品,我清楚地知道应该使用哪个具体工厂为我服务,于是,我实例化该具体工厂,生产出具体的产品来。Java Collection中的iterator() 方法即属于这种情况。第二种情况,我只是需要一种产品,而不想知道也不需要知道究竟是哪个工厂为我生产的,即最终选用哪个具体工厂的决定权在生产者一方,它们根据当前系统的情况来实例化一个具体的工厂返回给使用者,而这个决策过程这对于使用者来说是透明的。 //情况一:
Factory fac = new FactoryImplA(); //指定工厂 Product pro = fac.createProduct(); // 由指定工厂生成出具体的产品 pro.use(); //情况二:
Factory fac = Factory.createFactory(); Product pro = fac.createProduct(); // 由指定工厂生成出具体的产品 pro.use(); // public interface Factory{ ............. public static Factory createFactory(){ if(....){ return new FactoryImplA(); }else{ return new FactoryImplB(); } } } 抽象工厂一般通过工厂方法来实现(还可以通过原型来构造),如果将工厂方法比作一个独立的小厂房,那么抽象工厂就是一个大集团了,在它旗下,集合了很多工厂,虽然生成不同的产品,但是都有该集团的徽号。譬如说,虽然lenovo的鼠标键盘是罗技的,显示器是philips做的,但是都打上了联想的标志。我们买了一套联想的PC,就整套都带有联想的风格,这跟Dell是不一样的。我们平时所说的“look and feel”也就这个道理。你相要哪种风格,就看你选的是哪个集团了。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |