美文网首页
模板模式

模板模式

作者: 明朗__ | 来源:发表于2017-02-28 12:02 被阅读9次

    定义:

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

    案例(玩游戏)

    1. AbstractClass抽象类,定义算法结构,还可以提供通用实现
    //抽象游戏类
    public abstract class Game {
        abstract  void  login();
        abstract  void startPlay();
        abstract  void endPlay();
        //声明为final 防止子类重写
        public final void play(){
            System.out.print("开机");
            login();
            startPlay();
            endPlay();
            System.out.print("关机");
    
        }
    }
    
    1. ConcreteClass具体实现类 选择性的重定义算法中某些特定步
    public class LoLGame extends Game {
        @Override
        void login() {
            System.out.print("登录");
        }
    
        @Override
        void startPlay() {
            System.out.print("开始游戏");
        }
    
        @Override
        void endPlay() {
            System.out.print("结束游戏");
    
        }
    }
    
    
    1. Client 调用
    public class MyClass {
        public static void main(String[] args){
            Game game=new LoLGame();
            game.play();
        }
    }
    
    开机
    登录
    开始游戏
    结束游戏
    关机
    

    优缺点:
    优点:
    1、封装不变部分,扩展可变部分。
    2、提取公共代码,便于维护。
    3、行为由父类控制,子类实现。
    缺点:
    1、每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大。
    使用场景:
    1、有多个子类共有的方法,且逻辑相同 重要的、复杂的方法,可以考虑作为模板方法。
    注意事项:
    为防止恶意操作,一般模板方法都加上 final 关键词

    相关文章

      网友评论

          本文标题:模板模式

          本文链接:https://www.haomeiwen.com/subject/ntdxgttx.html