问题标签 [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.
c++ - 从基类中的静态工厂方法访问受保护的构造函数
我在基类中有一个静态工厂方法。由于某些原因,我希望每个派生类都将由该工厂方法实例化,因此所有这些类都具有受保护的 ctor。
在实际情况下,Create 函数会执行更多附加逻辑以及错误处理。
该代码显然无法编译,因为我们无权访问受保护的 ctor。
第一个似乎最常见的解决方案是派生类中的友元声明。但是它有效,我不喜欢它,因为:
- 我必须在每个派生类中添加这样的声明
- 这是一个朋友
考虑更通用的方法,我正在尝试这样的事情:
它有效,但对我来说看起来很奇怪,并且:
- 真正的指针类型是 CreateHelper 但是在这个函数之外我们看不到
- 这种方法需要 Base-familiy 应该是多态的,因为我们使用指向基类的指针(似乎应该始终满足这个条件,但仍然值得一提)
我的问题是
- 您如何看待最后一种方法?
- 它被认为是一个糟糕的设计吗?
java - 使用 Set.of 时的 JDK 11 泛型问题
使用 JDK 11 时,我无法理解以下类型安全问题。任何人都可以解释当我直接传递Set.of
参数时没有出现编译错误的原因:
php - 善用静态工厂
我有一个具有许多依赖项的类。目前这些是在构造函数中设置的:
这在 IoC 和 DI 方面设计得很糟糕,所以我想重新设计它,以便我的依赖项存在于构造函数中。
这使测试变得更容易,但是我不希望客户端必须实例化所有依赖项。它们是Thing
. 这会是下面提议的静态工厂的一个很好的候选者吗?然而,这确实改变了需要Thing
作为依赖项的依赖项的实例化方式(即,我必须通过 setter 而不是构造函数设置依赖项),这让我有点不舒服。我提出的解决方案如下。有更好的方法吗?
matlab - 如何在 matlab 包中使用静态工厂方法?
我在 +mypackage\MyClass.m 下有以下类定义
我使用 with_five() 作为静态工厂方法。
以下脚本应创建两个对象。
class_test1 已创建。
对于 class_test2 它说:
当我将 MyClass.m 放在包文件夹之外并删除“import”语句时,它可以工作。
我究竟做错了什么?
constructor - 是否可以为 Immutables 构建器生成公共默认构造函数以及静态工厂方法?
我正在尝试为具有公共默认构造函数和静态工厂方法的Immutables值定义构建器,即
new CustomerBuilder().name("Joe").age(21).build()
和
CustomerBuilder.builder().name("Joe").age(21).build()
我希望默认构造函数可用,因为我正在使用带有 DynamoDbEnhanced 客户端的构建器,它期望构建器的公共默认构造函数可用。我更喜欢初始化构建器的静态工厂方式,这就是我希望静态工厂样式也可用的原因。
我可以设置样式中的属性组合来完成此操作吗?这是可用于定义不可变样式的可能注释的参考。