问题标签 [template-method-pattern]

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 投票
3 回答
182 浏览

oop - OOP - “默认”错误的类名?

我正在实现一个模板方法类型的模式,并有几个类来实现该行为。

例如,我的结构如下:

“默认”类包含不需要任何自定义类型的行为。我的问题是,“默认”对班级来说是个坏名字吗?

我想,既然我在问这个问题,我已经对这个名字产生了一些严重的怀疑,但是你还能把一个提供类型之间默认行为的类称为什么?

0 投票
2 回答
758 浏览

java - 超类-抽象类中的具体方法

我有一个抽象类 Shape、一些子类和一些方法来计算面积、周长和绘制被覆盖的形状。我试图在这个应用程序的抽象类中找到一个模板方法,但我想不出任何方法。我还没有找到任何通用方法,它们对于所有形状都是相同的,并且也会在 GUI 上产生一些东西。我想在抽象类中有一个方法来比较两个形状的区域,但我无法理解如何做到这一点,因为我认为我不能使用它(指类的实例)一个抽象类。所有形状有什么共同点吗?我的模板方法是什么?谢谢你。

0 投票
1 回答
1063 浏览

c++ - 是否可以在构造函数中使用模板方法模式?

可能重复:
在构造函数中调用虚函数

我有一个类 Shape 及其子类 Sphere :

现在,如何处理 Shape 构造函数中的子类内容?我可以求助于 模板方法模式,但我将被迫在构造函数中调用纯虚函数;我试过了,编译器不喜欢它

编辑

我选择在一个新方法“init”中移动构造函数,而虚拟方法将是“subInit”:

它基本上是模板方法模式

客户会写:

然后我有我的答案:在构造函数中应用这种模式是不可能的,至少在 C++ 中是这样

0 投票
3 回答
2215 浏览

java - 模板方法模式 - 命名约定

我有这个名为RenderableEntity的抽象类。

我有一个公共方法render(),其中包含一些围绕抽象受保护render()方法的逻辑。我应该如何命名这个抽象render()方法。是否有某种约定,例如。doRender()makeRender()对于受保护的方法render()

编辑:我知道这个片段不能编译。我只是想知道如何命名这个抽象方法,因为我不能拥有具有相同名称和相同参数的方法。

0 投票
3 回答
116 浏览

javascript - JS模板方法模式中`this`的含义

为什么标记的行找不到protectedACMember

有模拟私人、受保护和公共成员的好模式吗?静态/非静态也是?

0 投票
4 回答
201 浏览

c# - C# 使用设计模式重构具有不同细节的相同操作

我试图找到重构代码的方法,但不知道如何做到这一点。

例如,我们有几个类

后者我需要返回这些类 List、List、List 的对象列表并将它们转换为 Object[][]。

对于每次转换,我都做同样的事情

是否可以使用某种设计模式来分离这种转换?

0 投票
3 回答
1584 浏览

java - 静态类的模板方法模式

我有一个执行一些工作的 util 类。显然,它对扩展是封闭的,所有方法都是静态的。为简单起见,该类如下所示:

该类具有doWork执行大量计算的方法。顺便说一句,方法调用辅助方法help来获取一些结果,其余代码使用help方法返回的结果。

现在,在客户端代码中我想重用 method 的功能doWork,但不是调用help我想调用help2method. 最简单的解决方案只是创建doWork2替换help为的方法help2

这是非常糟糕的方法,因为每个更改都doWork必须在doWork2其中一个中复制。这与模式非常相似Template Method,但由于我们这里没有扩展,我们不能应用它。

我想出的最佳解决方案是向此方法添加参数,但保留所有现有用户doWork

有哪些更好的设计方案可以用来解决这个问题?有没有办法像有一样实现灵活性Template Pattern,但在应用程序类中。

提前致谢。

0 投票
1 回答
126 浏览

c# - 工厂方法模式和抽象工厂模式

我有一个问题已经在很多方面进行了解释,但仍然没有让我清楚。

  1. 就抽象工厂模式而言,通过“对象组合”创建对象是什么?

似乎两种模式都使用继承来创建对象。

0 投票
1 回答
1927 浏览

java - 将 json 通用解析为 java 对象

我有一些 java 类MyClass1,它们MyClass2的状态保存在 json 对象中:

现在我想编写一个通用方法来使用net.sf.json帮助将 Json 对象解析为 Java 对象。

让我们从 MyClass1 开始 - 我想创建一个List<MyClass1>包含 json 中描述的 2 个对象。

我的第一个问题是 - 第 5 行有效吗?我的第二个问题在第 8 行:在某些时候我想创建一个 type 的对象T,这可能吗?

非常感谢您的帮助!

编辑:也许这就是我正在寻找的。如果您也可以对编辑发表评论,我将不胜感激。

0 投票
2 回答
1804 浏览

c# - 没有继承的模板方法模式

如何实现模板方法模式的变体,其中具体类不从基类继承,但保持模式的整体特征。它不能继承的原因是它被迫从另一个类继承,并且多重继承不可用。

例如,假设以下模板方法模式:

在没有 ConcreteClass 继承 BaseClass 的情况下,如何获得相同的结果?