![]() |
1
6
总结并扩展了我对以下问题的评论 正如其他人所说,这不是一个好主意 工厂 ,这仅仅是因为不存在具有此名称的模式。要么是一个 或者 ,尽管从实用角度来看,人们通常指的是“或”或“只是说” 工厂 会话、缓存和数据库通常是在应用程序流的早期初始化的,所以这基本上是引导工作。我得到的印象是,你要找的不是那么多 创造 在整个应用程序中。这是一个有点不同的关注,从什么样的 工厂 做 工厂 ,并不意味着您的代码不好。如果它解决了你的问题,那很酷。但我仍然认为,你正在尝试做什么,例如创造 在运行时管理资源最好与 DI Service Container 如果您不想使用DI容器 对于这个,你可以看看 Zend_Application and how they bootstrap resources . 这是另一种选择,让我们有可能 add DI containers later. 事实上,您前面问题中的很多主题已经在Zend框架中解决了,例如配置类。我不是说使用ZF,但你可以查看它,看看它们是如何工作的。当然,你可以看看 other frameworks 也
|
![]() |
2
5
这就是工厂模式,但您可能需要一个更好的命名约定,而不仅仅是调用它
虽然从技术上讲,您可以称之为工厂模式,但它可能不是该模式的良好用法。Factory是一种创造性的模式,它通过直接引用类名和对象创建来封装代码,就像在精确的构造函数参数中一样。要获得最佳结果,请在设计类和工厂时牢记这一点。 例如 StackOverflow 根据用户的声誉分数为用户提供不同的权限。假设说,它可能有以下类型的用户:
如果以后我们要更改类名或用户实例化的方式,则必须找到并更改创建对象的每个这样的实例。如果你问我的话,我要做很多工作。相反,如果我们在这里使用工厂模式,那么更改将在工厂类中的单个方法中进行。
|
![]() |
3
3
工厂是一种隐藏实现和实例化的方法。通常会进行一些组装,但简而言之。。。。
|
![]() |
4
2
由于您似乎只是想创建一个用户,因此我不认为有必要使用抽象的因素,即工厂。工厂的思想是创建实现特定接口的对象。您希望能够实例化同一接口的两个不同实现。关键是,您可能需要一遍又一遍地创建这些对象,并且在整个代码中将其从ObjectA更改为ObjectB是很麻烦的。交换工厂很容易,因为它通常是一个单身汉。
当对象有不同的表示形式时,通常使用生成器,但这里的情况并非如此。在我看来,缓存、数据库和会话可以作为单例实现,从而简化了复杂的操作。否则,我建议使用ServiceLocator,它允许您
|
![]() |
5
1
在我看来更像是构建器模式。你实际上指的是哪种工厂模式,AbtractFactory还是FactoryMethod?然而,它们都处理继承,而您的代码只是组装一个“复杂”对象。 |
![]() |
MattT · 添加rowfactory后不显示Javafx表视图 7 年前 |
![]() |
vpetrovic · 具有Autofac依赖项的工厂 7 年前 |
![]() |
Praveen Rai · 创建者在工厂模式中的作用 7 年前 |
|
bschreck · 在不知道类型的情况下返回泛型对象? 7 年前 |
![]() |
tblznbits · 如何在定义全局方法时从继承的类中动态选择子类 7 年前 |
![]() |
nanachimi · 当实现的构造函数具有要注入的依赖项时的工厂模式 7 年前 |
![]() |
satyanarayana · 使用工厂模式在同一表中加载不同的自定义单元格 10 年前 |