【问题标题】:Can I create my own methods in a subclass using the template method design pattern?我可以使用模板方法设计模式在子类中创建自己的方法吗?
【发布时间】:2021-03-24 09:14:26
【问题描述】:

使用在抽象类之外创建的方法是否会扰乱模板方法设计模式?如果我创建 MyOwnMethod 并在 a 方法中调用它,它仍然是模板方法模式吗?

public abstract class TemplateMethodClass {

    public final void TemplateMethod() {
      a();
      b();
      c();
    }

    protected abstract void a();

    protected abstract void b();

    protected abstract void c();
}
public class SubClass extends TemplateMethodClass {

    public void MyOwnMethod() {
        System.out.println("I am not from template");
    }

    @Override
    protected void a() {
        MyOwnMethod();
    }

    @Override
    protected void b() {}

    

    @Override
    protected void c() {}
}

【问题讨论】:

  • 为什么没有额外的方法?
  • 那么这些附加方法是否应该是私有的,让用户只能从 main 调用 TemplateMethod()?
  • 为什么不被保护/私有? (很抱歉通过提问来回答,但您的问题到底是什么)
  • 好的,答案是没关系,我可以创建自己的方法,并且仍然保持模板方法设计模式的想法是吗?
  • 我写的代码还是模板方法设计模式吧?

标签: java oop design-patterns template-method-pattern


【解决方案1】:

模板方法设计模式是关于每个子类在骨架中定义certain steps

目的是通过将一些步骤推迟到子类来定义算法的骨架,即它让子类以自己的方式定义算法的某些步骤,从而保持算法结构的完整性。

步骤内部可以有一个或多个方法,如果这些方法仅在子类中使用,它们可能是私有的

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-16
    • 2012-02-16
    • 2011-01-06
    • 2021-04-05
    • 1970-01-01
    相关资源
    最近更新 更多