WEB开发网
开发学院WEB开发ASP.NET .NET中的设计模式 - 策略模式&状态模式 阅读

.NET中的设计模式 - 策略模式&状态模式

 2010-10-28 13:31:28 来源:WEB开发网   
核心提示:下面举两个实际中的例子.一,在移动网络优化中,一般可以采用遗传算法,模拟退火算法和基于拓扑关系的算法.实际项目中,往往我们可以根据不同情况采用不同的算法,而客户对用什么算法往往并不关心.如果出现了第四种算法,工程师需要知道,而客户一样不需要知道.二,基于GIS组件的二次开发,出了已有地图鼠标操作外,我们往往需要添加自己

下面举两个实际中的例子.

一,在移动网络优化中,一般可以采用遗传算法,模拟退火算法和基于拓扑关系的算法.实际项目中,往往我们可以根据不同情况采用不同的算法,而客户对用什么算法往往并不关心.如果出现了第四种算法,工程师需要知道,而客户一样不需要知道.      

二,基于GIS组件的二次开发,出了已有地图鼠标操作外,我们往往需要添加自己的鼠标行为,此时一个良好的设计是我们扩展鼠标的状态,扩展鼠标的行为,让后将他们对应起来.同时不影响原来的鼠标行为.基因

请仔细比较下面代码片断的细节差异.

1.策略模式

2.状态模式

public void Topology(){
         //通过拓Topology式计算A获取结果B
       }
       public void Gene(){
         //通过Gene方式计算A获取结果B
       }
       public void Simulation(){
         //通过Simulation方式计算A获取结果B
       }
       public void Strategy()
       {
         string flag = "";
         if (flag == "Topology")
           Topology();
         else if (flag == "Gene")
           Gene();
         else if (flag == "Simulation")
           Simulation();
         //work complated
       }

 

public override void Action(string mouseState){
       base.Action(mouseState);
       if (mouseState == "Pan")
         Pan();
       else if (mouseState == "Select")
         Select();
     }
     public void Pan() {/*平移地图*/}
     public void Select(){/*选择图形*/}

上一页  1 2 3 4 5  下一页
赞助商链接