专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

Java 设计模式之模板方法模式(行为型)

目录

  • 一、模式定义
  • 二、模式角色
  • 三、模式分析
  • 四、具体例子
  • 五、模式应用场景

一、模式定义

模板方法模式就是在一个抽象类中定义一些骨架方法,然后通过类继承的方法,将一些方法延迟到继承类里。模板方法模式是一种类行为型模式,是一种比较常用的方法。不属于对象行为型模式,因为只是通过类继承实现。

Template Method Pattern: Define the skeleton of an algorithm in an operation, deferring some steps to subclasses. Template Method lets subclasses redefine certain steps of an algorithm without changing the algorithm’s structure.

二、模式角色

  • AbstractClass(抽象类)
  • ConcreteClass(实现类)

三、模式分析

模板方法,将基本方法封装组合在一个抽象类中形成一个总算法或者说一个总行为的方法。

模板方法的组成部分:

  • 抽象方法(Abstract Method)
  • 具体方法(Concrete Method)
  • 钩子方法(HookMethod)

抽象类代码:

public abstract class AbstractClass
{
    public void templateMethod()  //模板方法
    {
        primitiveOperation1();
        primitiveOperation2();
        primitiveOperation3();
    }
    public void operation1()    //基本方法-具体方法
    {
        //实现代码
    }
    public abstract void operation2();    //基本方法-抽象方法
    public void operation3()    //基本方法-钩子方法
    {
    }
} 

具体实现类代码:

public abstract class ConcreteClass
{
   /**
    * 基本方法-抽象方法
    */
    public abstract void operation2(){
        //具体实现
    }    

    /**
    * 基本方法-钩子方法
    */
    public void operation3(){
        //具体实现
    }
} 

子类不显性调用父类的方法,而是通过继承的方法来实现具体的业务方法,也就是说父类控制子类的调用,这种机制叫好莱坞原则。好莱坞原则的定义为:“不要给我们打电话,我们会给你打电话(Don‘t call us, we’ll call you)”。

四、具体例子

数据库操作的例子。数据库操作分为连接、打开、使用、关闭步骤。现在要使用mysql、oracle、db2等等关系型数据库进行数据库操作工具类的编写。而对于使用这几种不同的数据库,其实只是连接的代码不同,而其它操作的代码都是差不多的,所以可以使用模板方法进行代码复用。

ps:这个例子来自《设计模式》一书,稍微改了一点

模板方法

public abstract class DBOperator
{   
//抽象方法
    public abstract void connDB();
    public void openDB()
    {
        System.out.println("打开数据库");
    }
    public void useDB()
    {
        System.out.println("使用数据库");
    }
    public void closeDB()
    {
        System.out.println("关闭数据库");    
    }
    //模板方法
   public void process()
   {
    connDB();
    openDB();
    useDB();
    closeDB();
   }
}

mysql数据库

public class DBOperatorMysql extends DBOperator
{
    public void connDB()
    {
        System.out.println("使用JDBC-ODBC桥接连接Mysql数据库");      
    }
}

Oracle数据库

public class DBOperatorOracle extends DBOperator
{
    public void connDB()
    {
        System.out.println("使用JDBC-ODBC桥接连接Oracle数据库");     
    }
}

调用


class Client { public static void main(String a[]) { DBOperator db1; db1=new DBOperatorMysql(); db1.process(); db1=new DBOperatorOracle(); db1.process(); } }

五、模式应用场景

  • Spring、Struts2框架的应用,比如框架的初始化就有应用

文章永久链接:https://tech.souyunku.com/25435

未经允许不得转载:搜云库技术团队 » Java 设计模式之模板方法模式(行为型)

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们