• 模版方法模式 和策略模式


    模版方法模式结构:由一个抽象类和一个(或一组)实现类通过继承结构组成,抽象类中的方法分为三种:

    • 抽象方法:父类只声明但不实现,由它的子类去实现。
    • 模版方法:父类声明并实现。模版方法调用抽象方法来完成主要的逻辑功能,并且模版方法大多会定义为final类型,不能被子类重写。
    • 钩子方法:父类声明并实现。但子类可以去扩展,子类可以通过扩展钩子方法来影响模版方法的逻辑。

    模版方法模式优点:容易扩展,便于维护,比较灵活

     

    策略模式结构:

    • 封装类:也叫上下文,对策略进行二次封装,目的是避免高层模块对策略的直接调用。

    • 抽象策略:通常情况下为一个接口,当各个实现类中存在着重复的逻辑时,则使用抽象类来封装这部分公共的代码,此时,策略模式看上去更像是模版方法模式。

    • 具体策略:具体策略角色通常由一组封装了算法的类来担任,这些类之间可以根据需要自由替换。

     

    interface IStrategy {  
           public void doSomething();  
       }  
       class ConcreteStrategy1 implements IStrategy {  
           public void doSomething() {  
               System.out.println("具体策略1");  
           }  
       }  
       class ConcreteStrategy2 implements IStrategy {  
           public void doSomething() {  
               System.out.println("具体策略2");  
           }  
       }  
       class Context {  
           private IStrategy strategy;  
             
           public Context(IStrategy strategy){  
               this.strategy = strategy;  
           }  
             
           public void execute(){  
               strategy.doSomething();  
           }  
       }  
         
       public class Client {  
           public static void main(String[] args){  
               Context context;  
               System.out.println("-----执行策略1-----");  
               context = new Context(new ConcreteStrategy1());  
               context.execute();  
         
               System.out.println("-----执行策略2-----");  
               context = new Context(new ConcreteStrategy2());  
               context.execute();  
           }  
       }

     

     

  • 相关阅读:
    面试可能遇到的关联式容器(map、set等)相关问题
    C++学习 STL组件之vector部分总结
    C++ 菱形虚拟继承 与 指针偏移问题
    C++ 关键字 explicit 的使用
    C++ sort()排序函数用法
    C++ 字符流 stringstream
    C/C++ 每日一题
    C/C++ 超长正整数相加
    C++ 二叉搜索树原理及其实现
    Tomcat安装
  • 原文地址:https://www.cnblogs.com/mcahkf/p/9227893.html
Copyright © 2020-2023  润新知