您的位置:首页 > 其它

设计模式学习笔记-策略模式

2017-03-13 09:32 465 查看
公司项目需要重构,这几天就为这个事情发愁,就准备再把设计模式在学习一遍。人都说学了就要总结和应用。我这里就把我的总结卸载博客里。也可以帮助记忆,和大家分享我的学习旅程。

设计模式就是把前辈们走过的路都绘制成地图。我们循着这些路可以更快的到达自己的目的地。今天我就把刚学的策略模式的学习历程记录一下。

策略模式:定义一系列算法,并把每一个算法封装起来,他们之间可以相互替换。策略模式让算法独立于使用它的客户而独立变化。------定义有一些绕口我白话的说一下吧。就是说一系列算法(可以是一些行为)这些算法被客户使用时根据客户直接选择当中的某一个算法。通过一个的接口或抽象类,把这些算法给屏蔽起来。哎呀,本人学历有限,可能没讲明白,那我就把自己理解的UML图来标识吧。

策略模式UML


大概根据这个UML类图说说吧:算法接口被抽象类调用,在子类object_A中可以通过构造对ialgorithm进行固定初始化:

ialgorithm = new Algorithm_1();

实现抽象方法中的Set_ialgorithm(IAlgorithm)可以对ialgorithm对象进行动态更改:

public override void ialgorithm(IAlgorithm temp)
{

      ialgorithm = new Algorithm_2();
}

对象调用ialgorithm的display()方法时就可以有不同的行为了。
object_A  test  = new object_A(Algorithm_1); 
test.ialgorithm.display();
test.Set_ialgorithm(Algorithm_2);
test.ialgorithm.display();
策略模式就把算法的实现和客户独立开来了,还可以动态的替换算法。

三个原则:
封装变化,多用组合少用集成,针对接口进行编程,把变化隔离开来。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: