template-method-pattern

    1热度

    2回答

    经过几个小时(重新)搜索,我不能拿出一个正常的抽象类和使用模板模式之间的可解释的区别。 我唯一看到的是: 同时使用一个抽象类,你都需要实现的所有方法。但是在使用模板方法的时候,你只需要实现那些抽象方法。 有人可以向我解释模板模式的优点和模板模式与抽象类的主要区别。 p.s.我只是想知道这更好的了我自己的理解/学习 编辑: 谢谢你的快速反应!但是我会更好地解释它(因为它已经以正确的方式:))。我知道

    6热度

    3回答

    所以我一直在阅读关于Objective-C的模板方法,我正试图理解它们的特殊之处。根据我的理解,Base类中的任何方法都可能被覆盖,super可以被调用?那么模板方法不仅仅是覆盖基类中的方法吗? 如果我错了,你能解释一下模板方法模式是什么,你能提供一个例子吗?

    1热度

    1回答

    假设我有一个模板方法template(),它调用m1()和m2()。我有m1和m2的测试。现在在测试template()时,应该使用mocking来检查m1和m2是否被正确调用,或者测试其API或两者。 我觉得测试来检查模板的算法(使用嘲讽)是低级别的,几乎就像检查每一行源代码。 我想听听其他人对此的看法。

    15热度

    1回答

    从对模板方法模式四人帮: 三个执行问题值得注意: 使用C++的访问控制。在C++中,模板方法调用的基本操作可以声明为受保护的成员。这确保了 他们只被模板方法调用。必须被覆盖的原始操作 被声明为纯虚拟。模板方法 本身不应被覆盖;因此您可以使模板 方法成为非虚拟成员函数。 “这确保它们只能通过模板方法调用。”是不是真的,是吗?由于原始方法(如果某些是虚拟的而不是纯虚拟的)例如也可以从派生类中调用。是不

    0热度

    1回答

    我有一个worker类的层次结构,所有这些类都对工件进行某种处理。我们的想法是,每个工人做一些预处理,推动工件的子类,然后做一些后处理: public void process(Workpiece wp) { doPreprocessing(wp); sub.process(wp); // this obviously doesn't work doPostProce

    1热度

    2回答

    这里有一个简单的设计模式的问题: 由于我的当前项目的一部分,我写了执行数据库搜索(使用web服务和相关的客户端存根),并返回结果的接口 - 这将随后被使用struts动作作为对JSON请求的响应。 接口是这样的: public interface DynamicSearchProvider { JSONObject getSearchResultsAsJSONObject(Datat

    -1热度

    1回答

    我正在寻找Java中模板方法模式的示例实现。例如,假设我想创建一个泛型类,该类可以遍历List<T>,并对列表中的每个T类型的项目执行一个带有签名void execute(T t)的模板方法。

    6热度

    3回答

    我有在Python,其中一些类是为了扩展到提供的代码丢失的自定义的比特(一拉Template Method pattern,也与变量)一些面向对象代码,这只会被超类使用,而不会被使用它们的客户端代码使用。 是否有任何风格约定如抽象(或钝痛,因为他们在超类的实现将是要么pass或养NonImplemented除外)的方法和属性? 我一直在浏览PEP-0008,它只提到了预先将下划线加到私人成员不打算

    3热度

    3回答

    我常常陷入的情况时,我想使用模板方法模式,但模板方法需要不同类型的参数,如: public abstract class AbstractFoo { public void process(TypeA a, TypeB b) { //do common processing if (b == null) { doProcess(a);

    9热度

    3回答

    模板模式在基类中提供算法,其中的步骤可以在派生类中修改。 在Builder模式中,混凝土生成器公开了构建由Director类调用的产品的方法。 我知道使用这些模式的目的有所不同。模板模式是改变模板中的一个或多个步骤的行为模式,而构建器模式是创建模式。 除了上述差异,还有其他的区别吗? 作为模板模式中的基础模板充当构建器模式中的导演。具体的构建者像模板模式中的派生类一样具有可替代的步骤? 有人可以请