问题标签 [static-factory]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
197 浏览

c++ - 从基类中的静态工厂方法访问受保护的构造函数

我在基类中有一个静态工厂方法。由于某些原因,我希望每个派生类都将由该工厂方法实例化,因此所有这些类都具有受保护的 ctor。

在实际情况下,Create 函数会执行更多附加逻辑以及错误处理。

该代码显然无法编译,因为我们无权访问受保护的 ctor。

第一个似乎最常见的解决方案是派生类中的友元声明。但是它有效,我不喜欢它,因为:

  1. 我必须在每个派生类中添加这样的声明
  2. 这是一个朋友

考虑更通用的方法,我正在尝试这样的事情:

它有效,但对我来说看起来很奇怪,并且:

  1. 真正的指针类型是 CreateHelper 但是在这个函数之外我们看不到
  2. 这种方法需要 Base-familiy 应该是多态的,因为我们使用指向基类的指针(似乎应该始终满足这个条件,但仍然值得一提)

我的问题是

  1. 您如何看待最后一种方法?
  2. 它被认为是一个糟糕的设计吗?
0 投票
3 回答
781 浏览

java - 使用 Set.of 时的 JDK 11 泛型问题

使用 JDK 11 时,我无法理解以下类型安全问题。任何人都可以解释当我直接传递Set.of参数时没有出现编译错误的原因:

您可以在 IdeOne.com 上实时运行此代码

0 投票
0 回答
41 浏览

php - 善用静态工厂

我有一个具有许多依赖项的类。目前这些是在构造函数中设置的:

这在 IoC 和 DI 方面设计得很糟糕,所以我想重新设计它,以便我的依赖项存在于构造函数中。

这使测试变得更容易,但是我不希望客户端必须实例化所有依赖项。它们是Thing. 这会是下面提议的静态工厂的一个很好的候选者吗?然而,这确实改变了需要Thing作为依赖项的依赖项的实例化方式(即,我必须通过 setter 而不是构造函数设置依赖项),这让我有点不舒服。我提出的解决方案如下。有更好的方法吗?

0 投票
2 回答
95 浏览

matlab - 如何在 matlab 包中使用静态工厂方法?

我在 +mypackage\MyClass.m 下有以下类定义

我使用 with_five() 作为静态工厂方法。
以下脚本应创建两个对象。

class_test1 已创建。
对于 class_test2 它说:

当我将 MyClass.m 放在包文件夹之外并删除“import”语句时,它可以工作。
我究竟做错了什么?

0 投票
0 回答
11 浏览

constructor - 是否可以为 Immutables 构建器生成公共默认构造函数以及静态工厂方法?

我正在尝试为具有公共默认构造函数和静态工厂方法的Immutables值定义构建器,即

new CustomerBuilder().name("Joe").age(21).build()

CustomerBuilder.builder().name("Joe").age(21).build()

我希望默认构造函数可用,因为我正在使用带有 DynamoDbEnhanced 客户端的构建器,它期望构建器的公共默认构造函数可用。我更喜欢初始化构建器的静态工厂方式,这就是我希望静态工厂样式也可用的原因。

我可以设置样式中的属性组合来完成此操作吗?这是可用于定义不可变样式的可能注释的参考。