当前位置:首页 科普知识 模板方法

模板方法

发布时间:2023-09-16 21:39:17

模板方法模式定义了一个算法的步骤,并允许子类别为一个或多个步骤提供其实践方式。让子类别在不改变算法架构的情况下,重新定义算法中的某些步骤。在软件工程中,它是一种软件设计模式,和C++模板没有关连。

模板方法用法

模板方法模式多用在:

模板方法

某些类别的算法中,实做了相同的方法,造成程式码的重复。

控制子类别必须遵守的一些事项。

模板方法用例(Java)

  abstract class Game {      private int playersCount;      abstract void initializeGame();      abstract void makePlay(int player);      abstract boolean endOfGame();      abstract void printWinner();           final void playoneGame(int playersCount) {         this.playersCount = playersCount;         initializeGame();         int j = 0;         while (!endOfGame()){             makePlay(j);             j = (j + 1) % playersCount;         }         printWinner();     } }//Now we can extend this class in order to implement actual games: class Monopoly extends Game {            void initializeGame() {         // ...     }      void makePlay(int player) {         // ...     }      boolean endOfGame() {         // ...     }      void printWinner() {         // ...     }             // ...  } class Chess extends Game {            void initializeGame() {         // ...     }      void makePlay(int player) {         // ...     }      boolean endOfGame() {         // ...     }      void printWinner() {         // ...     }             // ...  } public class Player {     public static void main(String args) {         Game chessGame = new Chess();         chessGame.initializeGame();         chessGame.playoneGame(1); //call template method     } }

模板方法

模板方法设计模式

在软件工程中,设计模式(design pattern)是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案。这个术语是由埃里希·伽玛(Erich Gamma)等人在1990年代从建筑设计领域引入到计算器科学的。

设计模式并不直接用来完成代码的编写,而是描述在各种不同情况下,要怎么解决问题的一种方案。面向对象设计模式通常以类别或对象来描述其中的关系和相互作用,但不涉及用来完成应用程序的特定类别或对象。设计模式能使不稳定依赖于相对稳定、具体依赖于相对抽象,避免会引起麻烦的紧耦合,以增强软件设计面对并适应变化的能力。

并非所有的软件模式都是设计模式,设计模式特指软件“设计”层次上的问题。还有其他非设计模式的模式,如架构模式。同时,算法不能算是一种设计模式,因为算法主要是用来解决计算上的问题,而非设计上的问题。

随着软件开发社群对设计模式的兴趣日益增长,已经出版了一些相关的专著,定期召开相应的研讨会,而且沃德·坎宁安(Ward Cunningham)为此发明了WikiWiki用来交流设计模式的经验。

温馨提示:
本文【模板方法】由作者 百科大全 转载提供。 该文观点仅代表作者本人, 自学教育网 信息发布平台,仅提供信息存储空间服务, 若存在侵权问题,请及时联系管理员或作者进行删除。
(c)2008-2025 自学教育网 All Rights Reserved 汕头市灵创科技有限公司
粤ICP备2024240640号-6