zoukankan      html  css  js  c++  java
  • 移动架构-模板模式

    定义一个操作中的算法框架,而将一些步骤延迟到子类中,使得子类不改变算法的结构即可重复定义算法的某些特点步骤

    角色

    AbstractClass抽象类,定义算法结构,还可以提供通用实现
    ConcreteClass具体实现类

    优缺点

    优点:
    1、封装不变部分,扩展可变部分
    2、提取公共代码,便于维护
    3、行为由父类控制,子类实现
    缺点:
    每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大

    应用场景

    1. 有多个子类共有的方法,且逻辑相同
    2. 重要的、复杂的方法,可以考虑作为模板方法

    为防止恶意操作,一般模板方法都加上 final 关键词

    理解实例

    模板模式其实很简单,无处不在
    抽象游戏类

    public abstract class Game {
    	abstract void login();
    	abstract void play();
    	abstract void stop();
    	public final void start() {
    		System.out.println("开始");
    		login();
    		play();
    		stop();
    		System.out.println("结束");
    	}
    }
    

    具体实现类

    public class PlayGame extends Game {
    	@Override
    	void login() {
    		System.out.println("登陆游戏");
    	}
    	@Override
    	void play() {
    		System.out.println("打游戏");
    	}
    	@Override
    	void stop() {
    		System.out.println("退出游戏");
    	}
    }
    

    测试类

    public class Test {
    	public static void main(String[] args) {
    		Game game = new PlayGame();
    		game.start();
    	}
    }
    
  • 相关阅读:
    【js】replace()
    【js】indexOf()
    【js】sort()
    【js】typeof与instanceof
    【js】with 语句
    跳出框架iframe的操作语句
    Mongodb启动命令mongod参数说明
    ERROR: child process failed, exited with error number 100
    SELECT控件add方法 ie 类型不匹配
    Red hat linux ping: unknown host www.baidu.com
  • 原文地址:https://www.cnblogs.com/cj5785/p/10664620.html
Copyright © 2011-2022 走看看