这样的情况怎么用工厂模式
下面的情况:
class A 使用class B
class B 使用class C、class D
我想使用工厂模式(工厂方法或抽象工厂),不知道该怎么实现对象的创建:
1 如果说要在A中添加 BFactory 的引用,B中添加 CFactory和 DFactory的引用,那么这些factory应该由谁去创建呢?
2 如果C和D的下一层还要引用别的类对象,那么不就引起工厂泛滥了吗,感觉很恐怖啊
希望大家帮帮!
[解决办法]
仔细想想工厂的作用,有必要用吗,需要应对怎样的变化,组合/关联跟工厂并不冲突,只要能体现事物的本质,一切都是合理的
[解决办法]
如果构造B时需要一些处理(例如B有很多子类,会根据某些条件生成不同的子类),而且A不感知这些创建过程,这时可以使用工厂来隐藏这个创建过程。一般工厂的调用就放在A里。
“class B 使用class C、class D ”也是一样的
工厂方法和抽象工厂的区别就是,前者一般创建单个对象,后者创建一组对象
[解决办法]
[解决办法]
如果创建A时不关心BCD,那么CD的创建由写B代码的人负责,B的创建由写A代码的人负责,简单工厂或工厂模式都可以;如果CD是一组,B那里也许需要抽象工厂;如果ABCD的创建都由调用者负责,那么就必须把每个工厂作为参数传进去了,像这样:
ProductA = AFactory.Create(new BFactory(new CFactory,new DFactory) ) )
这些Factory需要有个基类,构造函数用智能指针之类保存工厂.