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

  • 相关阅读:
    自动刷新页面
    超链接<A>链接到某个文档
    JS脚本的对话框
    表最后更新的标识列
    c#对象私有属性在重载Equals中的使用
    一个关于在Fedora下安装jdk的问题
    表格的行转列
    UNION和UNION ALL的区别
    关于使用存储过程的一些好处以及注意事项[转]
    SQL 外链接操作小结
  • 原文地址:https://www.cnblogs.com/ldqwyl/p/2031720.html
Copyright © 2011-2022 走看看