![]() |
浏览:7332007-11-12 15:47 来自彭成刚 : 小生初来炸到,呵呵,看了点资料,自己总结出来,对错都是很正常的,望大家多多批评指正! 由于俺是做web开发的,看了设计模式都是java的,感觉虽然还是比较懂的,但是毕竟是java的吗。。所以按照自己的理解,给翻译成C#版的了。。 策略模式定义:定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 设计原则:针对接口编程,而不是针对实现编程。 这里用的是个鸭子的例子,我也就直接翻译过来了。。吼吼。。 首先我理解策略模式最重要的就是针对接口,所以这里面当然要出现接口了。。 我先定义个页面输出函数吧,别回来页面都没有个write函数,嘎嘎 public class w 好了,开工了。这里我就来定义这个鸭子的方法了。。谁让是我写这篇文章呢。。嘎嘎。。 看看鸭子的基类: public abstract class duck protected quackBehavior quackBehaviorp; public void swim(System.Web.UI.Page page) public abstract void display(System.Web.UI.Page page);//虚拟virtual 抽象abstract 注意:抽象必须放到抽象类里面 public void quack(System.Web.UI.Page page) }//class duck end 这里的 quackBehavior 就是接口了,现在可以针对这个接口编程了,分别定义3个类,来实现这个接口,一个呱呱叫,一个哈哈叫,一个不会叫。并给出接口。 public interface quackBehavior public class quackWawa : quackBehavior public void quack(System.Web.UI.Page page) #endregion } public class quackHaha : quackBehavior public void quack(System.Web.UI.Page page) #endregion } public class quackNone : quackBehavior public void quack(System.Web.UI.Page page) #endregion } 现在我们来做两个鸭子吧,这里做个老鸭和木头鸭好了。 public class laoya : duck public class mutouya : duck } ------------------------------------- 前台页面调用: duck laoya = new laoya(); duck mutouya = new mutouya(); -------------------------------- quack:wawa -------------------------------- 看书的时候有句很经典的话,对我印象很深,虽然是很简单的东东。。呵呵 laoya laoya = new laoya() <---- 针对显示编程 duck laoya = new laoya() <----- 针对接口编程 感觉很有深意啊。。今天一天什么都没干。。只要学会一种模式就好了,策略模式,总算是粗略懂了一点,代码已经都调试成功了。。大家可以一起来探讨下 策略模式 在web上的应用,大家一般都是在什么时候用上啊。。自我感觉这个可以用到会员系统上,暂时也就能想到这么多了。。写的不好,大家一定要踊跃批评啊!! 楼主
|