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();
    }
    与简单工厂模式的区别:
    可以把生成对象的逻辑,放到具体的客户端来处理,让用户自己处理,在客户端减去了与具体类型的依赖关系

  • 相关阅读:
    Thread系列之WaitHandle
    C# lock,Monitor 介绍(多线程并发控制)
    C#多线程学习(五) 多线程的自动管理(定时器)
    Thread系列之AutoResetEvent
    Thread系列之Thread.Sleep(0)
    (转)Java 内存模型
    哈希表(一)
    Java GC
    哈希表(二)
    图(一)
  • 原文地址:https://www.cnblogs.com/ldqwyl/p/2031720.html
Copyright © 2011-2022 走看看