zoukankan      html  css  js  c++  java
  • 策略模式

    定义:策略模式定义了一个算法家族,并分别把它们封装成单独的类,这些算法类之间可以自由切换,而与客户端的调用无关,使用到的原则:开放--封闭原则,多用组合少用继承。
    一般的组成部分:
    1.抽象策略类:封装了所有要使用的算法等操作,共同点是这些操作在使用过程中很容易变化
    2.具体的策略类:继承了抽象策略类,分别实现相应的算法等操作,实际的算法部分
    3.上下文调控类:依赖于抽象策略类,产生具体的策略类,并实现相应的操作
    代码解析:
    1.定义抽象策略类:
       public interface Icalcute{
       //公共的算法接口
       public double calcuteresutl();
    }
    2.具体策略类实现了抽象策略接口
    //车型为car
     public class car:Icalcute{
      public double calcuteresult()
    {
    return 33;
    }
    }
    //车型为bus
      public class bus:Icalcute{
      public double calcuteresult()
    {
    return 100;
    }
    }
    ........可以有多个车型类
    3.上下文调控类,根据不同的条件做相应的操作
    public calss context{
    Icaltute cal;
    //这一部分可以换成简单工厂模式中的switch函数,这样更灵活
    public context(Icaltute one)
    {
    cal=one;
    }
    public double Getcalcuteresult()
    {
     return cal.calcuteresult();
    }
    客户端代码
    public void main()
    {
    //车型car
     context con=new  context(new car());
      double fee=con.Getcalcuteresult();
    //车型bus
     context con=new  context(new bus());
      double fee=con.Getcalcuteresult();
    }
    与简单工厂模式的区别:
    可以把生成对象的逻辑,放到具体的客户端来处理,让用户自己处理,在客户端减去了与具体类型的依赖关系

  • 相关阅读:
    数字签名(代码签名)流程
    (转)__cdecl __fastcall与 __stdcall
    装修主材
    ATL 获取flash信息
    Windows结构化异常
    格式化HRESULT获取对应文本
    which type of VS files should be committed into a version control system
    读Windows核心编程-5-作业
    IE WebBrowser事件触发
    Windows 结构化异常
  • 原文地址:https://www.cnblogs.com/ldqwyl/p/2031720.html
Copyright © 2011-2022 走看看