asdio的学习园地

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

这段时间研究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;

}

}

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

其他:

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

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

 

posted on   帝之晓  阅读(292)  评论(1编辑  收藏  举报
编辑推荐:
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
阅读排行:
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 《HelloGitHub》第 106 期
· 数据库服务器 SQL Server 版本升级公告
· 深入理解Mybatis分库分表执行原理
· 使用 Dify + LLM 构建精确任务处理应用
点击右上角即可分享
微信分享提示