当前位置:编程学习 > C#/ASP.NET >>

这样的情况怎么用工厂模式

下面的情况: 

class A  使用class B 

class B  使用class C、class D 

我想使用工厂模式(工厂方法或抽象工厂),不知道该怎么实现对象的创建: 

1 如果说要在A中添加 BFactory 的引用,B中添加 CFactory和 DFactory的引用,那么这些factory应该由谁去创建呢? 

2 如果C和D的下一层还要引用别的类对象,那么不就引起工厂泛滥了吗,感觉很恐怖啊 

希望大家帮帮! --------------------编程问答-------------------- 在以下情况下,适用于工厂方法模式:

1.       当一个类不知道它所必须创建的对象的类的时候。 

2.       当一个类希望由它的子类来指定它所创建的对象的时候。 

3.       当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。


class B 使用class C、class D  可以考虑使用

--------------------编程问答-------------------- 大概是这样的:
class B Implement InterfaceB
class C Implement InterfaceC
class D Implement InterfaceD

class A不想知道具体的实现InterfaceB的类,B在使用C和D的时候也是如此,根据工厂方法或者抽象工厂,

那么A中应当有一个InterfaceB的引用,同样,B中应该有IC和ID的引用

如果使用工厂方法,岂不是A中要有一个BFactory,B中有CFactory和CFactory?这样的话,我觉得是一种

工厂泛滥

--------------------编程问答-------------------- Abstract Factory: 主要用于具有一組Family 特性的對象.定義一個 Abstract Factory. 從它繼承出一些Concrete Fatory(實際工廠,分別對應創建不同的系列特征對象)。實際工廠依賴不同的實際對象,實際對象派生于抽象對象,那么最后,Client就只是依賴于:抽象工廠和抽象對象。 這樣如果有新系列的時候,不用改動原來的東西,只是需要再Extend a new Concrete Factory 及對應的實際對象
Factory Method:就是簡單一下,工廠專門負責對象創建,沒有系列的概念。  --------------------编程问答-------------------- 反射+泛型 静态工厂

Factory.Create<T>();

或者直接依赖注入了 --------------------编程问答-------------------- 模式用不用,怎么用,是要根據具體環境而定的,而不是為了用模式而用模式 --------------------编程问答--------------------
引用 3 楼 cjnet 的回复:
Abstract Factory: 主要用于具有一組Family 特性的對象.定義一個 Abstract Factory. 從它繼承出一些Concrete Fatory(實際工廠,分別對應創建不同的系列特征對象)。實際工廠依賴不同的實際對象,實際對象派生于抽象對象,那么最后,Client就只是依賴于:抽象工廠和抽象對象。 這樣如果有新系列的時候,不用改動原來的東西,只是需要再Extend a new Concrete Factory 及對應的實際對象
Factory Method:就是簡單一下,工廠專門負責對象創建,沒有系列的概念。


抽象工厂适用于我的这个例子吗?我自己觉得B、C、D都是为达到一个目标而创建的特定的对象,是不是可以把他们放到抽象工厂里面实现? --------------------编程问答--------------------
引用楼主 fantacyland 的回复:
下面的情况:

class A  使用class B

class B  使用class C、class D

我想使用工厂模式(工厂方法或抽象工厂),不知道该怎么实现对象的创建:

1 如果说要在A中添加 BFactory 的引用,B中添加 CFactory和 DFactory的引用,那么这些factory应该由谁去创建呢?

2 如果C和D的下一层还要引用别的类对象,那么不就引起工厂泛滥了吗,感觉很恐怖啊

希望大家帮帮!


一点也不恐怖。java里边这种冗余多得不胜枚举,而且很多搞java的以巨大的xml配置文件为荣! --------------------编程问答-------------------- 恩有道理,工厂模式不一定适合的时候可以考虑使用其他的设计模式 --------------------编程问答-------------------- 楼主没有真正理解工厂模式。。。。回去再看看书吧; --------------------编程问答-------------------- 顶! 学习了 --------------------编程问答-------------------- 顶 --------------------编程问答-------------------- 比如说有两个数据库,sql和access,就可以使用工厂模式,自动调用数据库 --------------------编程问答-------------------- 只是基本的对象引用关系。 看不出有使用Factory Pattern的必要。
--------------------编程问答-------------------- 其实,B不一定就是使用C和D,还有可能使用C1和D1,只要他们实现了同一接口,这就有点像Strategy模式,而不是简单调用 --------------------编程问答-------------------- 不懂,学习一下
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,