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

    这段时间研究provider模式,顺便研究了策略模式,发现策略模式也是个比较简单的模式。简单记一下。

    最简单的策略模式是涉及到四个类,调用者类,被调用者父类,两个或者两个以上继承于被调用者父类的子类。调用者类里面包含被调用者父类的引用,在构造函数里面加个被调用者类的参数。

    用代码来表示更明白:

    父类,定义抽象函数:

    public class Strategy

    {

    public abstract string write()

    {

    //return some string;

    }

    }

    ---------------------------

    多个子类,重载父类里面的抽象函数:

    public class StrategyA:Strategy

    {

    public override string write()

    {

    return "I am A";//具体实现1

    }

    }

    public class StrategyB:Strategy

    {

    public override string write()

    {

    return "I am B";//具体实现2

    }

    }

    ----------------------

    调用父类策略类

    public class Client

    {

    private Strategy _strategy;

    public void Client(Strategy mystrategy)

    {

    _strategy=mystrategy;

    }

    //调用策略类里面的方法

    public string DoSomething()

    {

    _strategy.write();

    }

    }

    -----------------------

    其他的类再来调用 client类,选择具体的策略

    public class anthor

    {

    public string doA()

    {

    client c=new client(StrategyA  a);

    return c.doSomething();//这里因为是调用StrategyA,返回的是 I am A;

    }

    }

    ===================================

    其他:

    组合,聚合,继承都可以实现代码复用。组合,聚合用多了更好用。

    重载以及多态带给了子类更多的灵活性。

  • 相关阅读:
    C语言基本语法——函数
    C语言基本语法——数组
    iOS面试总结(待完善)
    iOS开发——蓝牙开发
    iOS开发——性能分析
    ios开发——runtime
    Extjs6的常见问题及解决办法
    会员信息布局,自动放缩
    LINQ关于NULL的怪现象
    [代码整洁]自我感悟
  • 原文地址:https://www.cnblogs.com/asdio/p/1379341.html
Copyright © 2011-2022 走看看