zoukankan      html  css  js  c++  java
  • 模版方法模式 和策略模式

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

    • 抽象方法:父类只声明但不实现,由它的子类去实现。
    • 模版方法:父类声明并实现。模版方法调用抽象方法来完成主要的逻辑功能,并且模版方法大多会定义为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();  
           }  
       }

     

     

  • 相关阅读:
    【零基础】极星9.5量化入门二:滚动止盈策略
    【零基础】极星9.5量化入门零:简单的开始
    今天分享下移动端rem 适配
    css超出内容省略号代替。
    今天给大家的小知识点是JS的一种排序方式---快速排序
    highcharts 的基本使用
    zTree jquery-zTree的基本使用
    克隆 JS克隆
    JS判断一个对象是不是数组的几种方式
    js 定时器实现倒计时
  • 原文地址:https://www.cnblogs.com/mcahkf/p/9227893.html
Copyright © 2011-2022 走看看