读书笔记2:策略模式

     策略模式:定义了算法家族,分别封装起来,让它们之间可以互相替换,
此模式让算法的变化,不会影响使用算法的客户。

    我觉得,策略模式有点类似于工厂模式:继承一个父类,不同的子类实现父类的方法都不同,然后根据需求初始化相应的子类。不同的是策略模式是针对算法的,工厂模式可以使用所有这种情况。
依然以截取网页功能为例:
截取算法父类:
      对于不同的网页截取算法不同,可以抽象一个父类,它有一个截取算法

 public class ReadStrategeSuper
  {
    public abstract string ReadWebPage(){}
  }

  对于第一种网页对应算法一:

 public class ReadStratege1:ReadStrategeSuper
  {
    public overrride string ReadWebPage(){算法1;}
  }

   对于第二种网页对应算法二:

  public class ReadStratege2:ReadStrategeSuper
  {
    public overrride string ReadWebPage(){算法2;}
  }

 ... ...
  有一个Context来决定采用哪种策略。

public class Context
  {
    ReadStrategeSuper readSuper;
    public Context(ReadStrategeSuper readSuper)
    {
      this.readSuper = readSuper;
    }
    public string GetResult()
    {
      return readSuper.ReadWebPage();
    }
  }

    调用

  main()
  {
     Context context;
     第一种网页
     context = new Context(new ReadStratege1());
     string resultStr1 = context.GetResult();
     
     第二种网页
     context = new Context(new ReadStratege2());
     string resultStr2 = context.GetResult();
     
     ... ...
  }

    这样的好处是算法独立,易于修改维护,缺点是类太多,对于算法很多的情况,类太多管理反而不太方便。

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值