相关疑难解决方法(0)

何时使用抽象工厂模式?

我试图简洁地描述何时使用工厂,我自己和我的团队.我遇到了以下相关问题,这有点帮助:

基于这些链接以及一系列其他来源(在下面列出),我提出了以下内容:

何时使用抽象工厂模式:

  • 当您使用接口var或'new'运算符时
    • 例如,User user = new ConcreteUserImpl();
  • 并且您正在编写的代码在某些时候应该是可测试/可扩展的

说明:

  • 接口本质上意味着多个实现(适用于单元测试)
  • 接口变量意味着符合OCP和LSP的代码(支持子分类)
  • 使用'new'运算符会破坏OCP/DI,因为高度耦合的类很难测试或更改

"我是否为每种对象类型创建了一个工厂?这看起来过分了."

  • 不,你可以有一个(或几个)工厂生产很多(通常是相关的)对象类型
  • 例如appFactory.createUser(); appFactory.createCatalog(); 等等

何时不使用工厂:

  • 新对象非常简单,不太可能被细分
    • 例如List list = new ArrayList();
  • 新对象测试不是很有趣
    • 没有依赖关系
    • 不执行任何相关或长期工作
    • 例如Logger log = new SimpleLogger();

参考文献:


我的问题是:我的摘要是否准确,是否有意义?有什么我忽略的吗?

提前致谢.

language-agnostic oop design-patterns factory factory-pattern

18
推荐指数
2
解决办法
1万
查看次数

一个类是否应该有静态和非静态成员

我想弄清楚什么时候适合一个类同时具有静态和非静态函数.又名:

$obj = new ClassA;
$obj->doOOPStuff();

$something = ClassA::doStaticStuff();
Run Code Online (Sandbox Code Playgroud)

注意:此示例在PHP中完成,但问题是语言无关.

似乎如果你有一个要实例化的类,任何可以静态调用的函数,很可能属于另一个类.

有没有可行的案例,我会有一个使用静态和非静态成员的类?

language-agnostic oop

3
推荐指数
2
解决办法
292
查看次数