Java 模板方法模式问题
如果我有一个抽象的Java 模板方法模式问题,java,design-patterns,Java,Design Patterns,如果我有一个抽象的Parent类,它有一个templateMethod和一个具体的Child类: abstract class Parent { final void templateMethod() { foo(); } abstract void foo(); } class Child extends Parent { @Override void foo() { System.out.printl
Parent
类,它有一个templateMethod
和一个具体的Child
类:
abstract class Parent
{
final void templateMethod()
{
foo();
}
abstract void foo();
}
class Child extends Parent
{
@Override
void foo()
{
System.out.println("foo");
}
}
如果我只想让用户知道templateMethod
,而不想将foo
方法公开给classChild
的用户,同时让子类定义foo
方法的实现,我该怎么办?
或者,模板法在这种情况下不合适吗?那么,我还可以使用其他策略吗?正如JB Nizet在评论中所建议的,您可以:
abstract class Parent {
final void templateMethod() {
foo();
}
abstract protected void foo();
}
class Child extends Parent {
@Override
protected void foo() {
System.out.println("foo");
}
}
由于Parent.foo()
受保护
,因此只有Parent
的子类才能调用该方法
您可能还会发现这个问题很有用:将templateMethod()公开,但foo()方法受保护。