template-method-pattern

    2热度

    2回答

    注意:以下问题是关于Template Method Design Pattern和C++函数模板。为了区分两者,在引用C++模板时,我将在使用设计模式时使用斜体,使用使用粗体。 模板方法模式的想法是使算法的某些部分可交换。这通常通过继承来实现,其中子类提供插入到基类算法中的具体实现。但是,如果钩子方法需要为模板,则这将不起作用,因为模板不能是虚拟的。这里是不编译一个简单的例子: class Bas

    0热度

    2回答

    我有一个算法大纲 - 一些逻辑步骤必须按特定顺序执行。算法的结果必须是某个数字。当然,这使我想到了使用模板方法模式的想法。这适用于void方法,但这里出现了我的问题:算法中的每个步骤都不是void方法,但允许返回一个数字(因此它们是int方法) - 如果某个步骤返回非零数字,则此数字是算法执行的结果,如果它是零 - 执行继续下一步。 这听起来真的很微不足道,但我仍然觉得它在某种程度上丑有类似: p

    1热度

    1回答

    我是新来的设计模式。 我的问题是我在下面的情况下使用什么模式? interface UserExtractorService { String getUser(XXXX); default validate(File file); } class AExtractorService { public String getUser(String url) {

    0热度

    1回答

    四 刚总结了模板方法和战略如下区别: 模板方法使用继承来改变一个算法的一部分。 策略使用委托来改变整个算法。 什么在哪里结合两种设计的场景是合理和他们的关系会是什么样子? 简单的例子将涉及委托给模板方法的钩子方法内的战略,但是,我想不出一个很好的理由为这样的设计。此外,不是委托给子类,而是直接委托给策略。但是,如果没有继承,我们根本无法谈论模板方法。

    0热度

    1回答

    是否可以实现这样的行为?它不必使用继承,我只想实现具有通用参数传递的模板方法设计模式(使用C++模板)。 class A { public: template<typename ...tArgs> void call(tArgs ...vArgs) { for (int i = 0; i < 5; ++i) impl(vArgs...);

    0热度

    1回答

    假设我有模板方法设计模式实现的代码。我想在我的模板方法中测试方法调用的顺序和计数。我尝试使用PHPUnit模拟。我的源代码如下所示: class Foo { public function __construct() {} public function foobar() { $this->foo(); $this->bar(); }

    -1热度

    1回答

    比方说,我有一个策略接口: public interface Strategy { void perform(); } 和模板的方法来实现: public abstract class AbstractStrategy implements Strategy { @Override public void perform() { String

    2热度

    2回答

    从我所了解的来看,Template方法只不过是调用子类中定义的虚拟或抽象方法的普通方法。我是对的吗,还是对于这种我怀念的模式还有其他重要的东西? abstract class Foo { public void IamTemplateMethod() { // which will be called in child class object method1(); // be

    2热度

    3回答

    我正在阅读关于设计模式的内容,特别是关于模板方法,当时我的注意力被this问题抓住了。 阅读解释和具体代码后,我仍然想知道为什么这是'模板方法'设计模式的一个例子。 根据GoF的,这个图案的意图是: “定义的算法的骨架中的操作时,某些步骤推迟到子类。模板方法让子类重新定义算法的某些步骤,而不需要改变算法的结构“ ,有两个参与者: 抽象类: - 定义抽象的基本操作是具体子类定义了。实施算法步骤 -

    2热度

    1回答

    模板方法模式的实现中的抽象类是否可以有多个模板方法?