对于我目前正在进行的个人项目,我使用依赖注入和TDD作为开发的基础。我还使用工厂类来实现以下目标:
据我所知,通常工厂类应负责实例化一个特定类型,并且在运行时动态创建类型的不同实现时,它的实用性确实变得明显,但是,我并没有专门为此目的使用工厂。我的理由是上面列出的那些。为避免过度杀伤,我没有为每个类创建一个单独的工厂类,但我使用工厂类来实例化相关类的组,例如:
@interface TagsFactory : NSObject
/*
* Create a new tag with the specified name
*/
-(id<Tag>) createTagWithName:(NSString*) name;
/*
* Create a new TagsViewController with preselected tags.
*/
-(TagsViewController*) createTagViewControllerWithSelectedTags:(NSArray*) selectedTags;
/*
* Create a new TagsView
*/
-(TagsView*) createTagsView;
@end
然后,如果某个特定类需要构造其他对象,我会将负责这些对象的工厂类注入到类中,以便将对象创建委托给。
我的方法的缺点:
话虽如此,到目前为止,这种方法在可测试性和便利性方面对我来说非常有效,而不会过分淹没工厂类。
我的问题是:
感谢。
答案 0 :(得分:1)
对我来说似乎很好(仅仅做了1 - 2年TDD,但是,编程超过12),但我正确理解你的选择,
你可能已经知道的东西:最好不要在自己内部构建类,而是使用工厂,有时可以在工厂内设置多个级别。
如果你还没有看到Misko的一些视频,请点击它。这显示了多层: https://www.youtube.com/watch?v=RlfLCWKxHJ0#t=804
我希望vid中的位置是相关的。我为你扫描了大约10分钟并且无法靠近:D但我正在寻找他们说如果你有房子和门的地方......你怎么建造两者?在一个房子工厂或两个房子工厂和门工厂?
哦,更好的链接:开始here和一个single build method