设计模式【2】:策略模式
来源:互联网 发布:空之境界 知乎 编辑:程序博客网 时间:2024/05/29 15:11
策略模式(Strategy):它定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。
说白了策略模式要处理的是选择使用哪一种算法,而不是实例化一个对象。
策略模式的基本代码
Strategy类,定义所有支持的算法和公共接口
abstract class Strategy{ //算法方法 public abstract void AlgorithmInterface();{
ConcreteStrategy类,封装了具体的行为或算法,继承Strategy
class ConcreteStrategyA:Stratrgy{ public override AlgorithmInterface() { Console.WriteLine("算法A实现"); }}class ConcreteStrategyB:Stratrgy{ public override AlgorithmInterface() { Console.WriteLine("算法B实现"); }}class ConcreteStrategyC:Stratrgy{ public override AlgorithmInterface() { Console.WriteLine("算法C实现"); }}
Context,用一个ConcreteStrategy配置,维护对一个Strategy对象引用
class Context{ Strategy stratgy; public Context(Strategy strategy) { this.Strategy = strategy; } public void ContextInterface() { strategy.AlgotithmInterface(); }
调用
static void Main(String[] args){ Context context; context = new Context(new ConcreteStrategyA()); context.ContextInterface();}
由于实例化不同的策略,最终在调用context.ContextInterface()时,所得到的结果就不尽相同
0 0
- 设计模式:2策略模式
- 设计模式【2】:策略模式
- 设计模式:2)策略设计模式
- 设计模式-策略模式
- 设计模式:策略模式
- 设计模式-策略模式
- 设计模式 - 策略模式
- 设计模式-策略模式
- 设计模式-----策略模式
- 设计模式 策略模式
- 设计模式-策略模式
- 设计模式-【策略模式】
- 设计模式-----策略模式
- 设计模式-策略模式
- 设计模式--策略模式
- 设计模式- 策略模式
- 设计模式- 策略模式
- 设计模式------策略模式
- HDU 5901 Count primes (区间素数个数)
- 2D-slam 激光slam: 开源代码的比较HectorSLAM Gmapping KartoSLAM CoreSLAM LagoSLAM
- jQuery 动画
- BZOJ1818: [Cqoi2010]内部白点 树状数组+离散化
- Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
- 设计模式【2】:策略模式
- ubuntu 环境变量配置之后导致系统重启一直闪屏
- 一些常用的算法记录
- Python笔记——Unicode与16进制字符串相互转换
- 【Java】冒泡排序
- suricata 3.1 源码分析18 (模块注册及初始化)
- Python 学习笔记
- tp中 <include file="Public:header"/>
- HashMap简介