设计模式之模板方法模式

来自ChatGPt

// 抽象类定义了一个模板方法和一些抽象操作,子类可以根据需要实现这些抽象操作
abstract class AbstractClass {
    // 模板方法定义算法框架
    public final void templateMethod() {
        // 调用基本方法
        operation1();
        operation2();
        operation3();
    }

    // 基本方法,由子类实现
    protected abstract void operation1();

    protected abstract void operation2();

    // 基本方法,已经在抽象类中实现,子类也可以覆盖它
    protected void operation3() {
        System.out.println("执行默认的操作3");
    }
}

// 具体子类实现了在抽象类中声明的所需的抽象操作
class ConcreteClass extends AbstractClass {
    @Override
    protected void operation1() {
        System.out.println("执行具体操作1");
    }

    @Override
    protected void operation2() {
        System.out.println("执行具体操作2");
    }

    // 可选择性地覆盖基本方法
    @Override
    protected void operation3() {
        System.out.println("执行具体操作3");
    }
}

public class TemplateMethodDemo {
    public static void main(String[] args) {
        // 创建具体子类对象
        AbstractClass concreteClass = new ConcreteClass();

        // 调用模板方法,执行算法
        concreteClass.templateMethod();
    }
}

在上面的示例中,我们定义了一个抽象类 AbstractClass,该类包含一个模板方法 templateMethod() 和若干抽象操作,其中抽象操作由子类来具体实现。模板方法定义了一个算法框架,将一系列基本方法按照特定顺序组织起来。

然后我们创建了具体子类 ConcreteClass 继承自抽象类,并实现了抽象操作。在具体子类中,我们可以选择性地覆盖基本方法,以提供特定的实现。如果没有覆盖基本方法,将使用抽象类中定义的默认实现。

在示例的 main() 方法中,我们创建了具体子类对象 concreteClass,然后调用其模板方法 templateMethod(),从而触发整个算法的执行过程。

通过模板方法模式,我们可以定义算法的骨架,并将一些步骤交给子类来具体实现。这样可以实现代码的复用和灵活性,同时也能保持算法的稳定性和一致性。

你可能感兴趣的:(android网络,设计模式,模板方法模式,java)