23种设计模式-模板方法模式(安卓应用场景介绍)

什么是模板方法模式?

模板方法模式是一种行为设计模式,它定义了一个算法的步骤,并允许子类为一个或多个步骤提供实现方式。这种模式可以使得子类在不改变算法结构的情况下,重新定义算法的某些步骤。

模板方法模式的结构

模板方法模式包含以下角色:

  • 抽象类:定义了算法的基本结构和抽象方法,子类必须实现这些抽象方法。
  • 具体类:实现抽象类中定义的抽象方法。

模板方法模式的实现

下面我们通过一个简单的例子来说明模板方法模式的实现。我们定义一个抽象类 Game,它包含一个模板方法 play 和一些抽象方法 initializestartPlayendPlay。具体类 CricketFootball 继承了 Game 类,并实现了其中的抽象方法。

 

我们可以看到,Game 类中的 play 方法定义了游戏的基本流程,并调用了抽象方法 initializestartPlayendPlay。具体的游戏类 CricketFootball 继承了 Game 类,并实现了这些抽象方法。

下面是一个简单的测试程序:

public abstract class Game {
    abstract void initialize();

    abstract void startPlay();

    abstract void endPlay();

    // 模板方法 
    public final void play() {
        // 初始化游戏 
        initialize();
        // 开始游戏 
        startPlay(); // 结束游戏 
        endPlay();
    }
}

public class Cricket extends Game {
    @Override
    void endPlay() {
        System.out.println("Cricket Game Finished!");
    }

    @Override
    void initialize() {
        System.out.println("Cricket Game Initialized! Start playing.");
    }

    @Override
    void startPlay() {
        System.out.println("Cricket Game Started. Enjoy the game!");
    }
}

public class Football extends Game {
    @Override
    void endPlay() {
        System.out.println("Football Game Finished!");
    }

    @Override
    void initialize() {
        System.out.println("Football Game Initialized! Start playing.");
    }

    @Override
    void startPlay() {
        System.out.println("Football Game Started. Enjoy the game!");
    }
}
public class TemplatePatternDemo {
    public static void main(String[] args) {
        Game game = new Cricket();
        game.play();
        System.out.println();
        game = new Football();
        game.play();
    }
}

 输出结果如下:

 Cricket Game Initialized! 
 Start playing. Cricket Game Started.
 Enjoy the game! Cricket Game Finished!
 Football Game Initialized! Start playing. 
 Football Game Started.
 Enjoy the game! 
 Football Game Finished!

可以看到,Game 类中的模板方法 play 定义了游戏的基本流程,并且具体的游戏类可以通过实现抽象方法来定制游戏的流程。

模板方法模式在 Android 开发中的应用

在 Android 开发中,模板方法模式经常用来实现 Activity 和 Fragment 的生命周期方法。这些生命周期方法在 Android 应用程序的启动、暂停、恢复、停止等过程中被调用,可以通过重写这些方法来定制应用程序的行为。

下面以 Activity 的生命周期方法为例,来说明模板方法模式在 Android 开发中的应用。

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); // ... 
    }

    @Override
    protected void onStart() {
        super.onStart();
        // ... 
    }

    @Override
    protected void onResume() {
        super.onResume();
        // ... 
    }

    @Override
    protected void onPause() {
        super.onPause();
        // ... 
    }

    @Override
    protected void onStop() {
        super.onStop();
        // ...
    }

    @Override
    protected void onDestroy() {
        super.onDestroy(); // ... 
    }
}

在上面的代码中,MainActivity 继承了 AppCompatActivity 类,并实现了 onCreateonStartonResumeonPauseonStoponDestroy 这些生命周期方法。这些方法是由 AppCompatActivity 类定义的,它们的实现方式可以被子类覆盖,以定制应用程序的行为。

例如,我们可以在 onCreate 方法中加载应用程序的数据,可以在 onStart 方法中开始一些后台任务,可以在 onResume 方法中开始播放视频等。这些方法在应用程序的不同阶段被调用,可以让我们在这些阶段执行相应的操作。

模板方法模式的优点和缺点

优点

  • 提高代码复用性,将公共部分抽象到父类中,子类只需要实现具体的操作即可。
  • 提高扩展性,由于模板方法模式允许子类重新定义算法的某些步骤,因此可以灵活地扩展算法。
  • 便于维护,由于模板方法模式将算法的流程固定在父类中,因此可以避免在子类中修改算法流程而引起的问题。

缺点

  • 如果算法的流程非常复杂,或者存在大量的变化点,就需要增加许多抽象方法,这可能会增加系统的复杂度。
  • 如果子类需要重写算法的许多步骤,就会导致代码量增加,维护成本也会增加。

总结

模板方法模式是一种常用的设计模式,在 Android 开发中尤其常见。它可以提高代码的复用性和扩展性,让系统更加灵活和易于维护。在实际开发中,我们可以根据需求选择适当的模板方法模式,以提高代码的质量和效率。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值