关于装饰模式使用 最近在看设计模试方面的东西,看到装饰者模式,感觉不太理解。现在有一个场景,一个頋额,去超市买水果,可供选择的水果有 桔子,苹果,香焦,波萝,每样水果都有水果名称,价格属性,如何使用装饰模试,模拟顾客购物,得到客户购买的水果清单,每个水果的价格,及合计金额 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 给你一个场景,给你几个类,告诉你用xxx模式。你按照书上写的方法,对照UML写出个实现(其实能看懂UML图写出代码已经不算很菜了)。这就好比什么呢?拍武打片,站好了模特,说好了用什么什么招式,先大家都不动,你运一口气,数321,开始。你这个连环动作一做,对方自动倒地,做痛苦状。大功告成。你根本体会不到这个招式的妙处,一点成就感也没有。如果你遇到一个歹人,真的要开打了,你还敢用这些招式么?同样,你遇到真实的需求,你知道这里该不该用装饰模式,比你怎么用装饰模式更重要。你不能抱着你的电脑和客户说,对不起,你的需求改一改,不然这里不能套用这个设计模式。 这就好比一个Word或者Excel的操作员学习编程。对你来说,定义一个变量,或者调用一个函数,是具体的方法,对于打字操作员来说,这些就抽象了,对他来说,点哪个菜单,在哪里输入哪几条语句才是具体的解决方案。设计模式就是这样,本身是给有具体解决方法的人提供更高层次的抽象的。你连具体实现都没学会,学设计模式有什么意义呢。 好,那我就告诉你,装饰模式在C#里面一般没有用了。因为语言层面已经实现了。这个语法叫扩展方法。一个典型的例子就是LINQ。我们知道,Where Count OrderBy First ToArray ... 这些方法都不属于 List,或者 Cpllection 或者数组。它们通过扩展方法被装饰上去的。工厂模式也没用了,我举一个例子,你体会下:http://topic.csdn.net/u/20120103/14/ab3582e6-0988-4cfb-8684-6f8e94adb6fe.html至于策略模式,其实也用不到了。匿名委托和Lambda表达式把分离策略算法的工作简化到了极致。 通过FOR循环将数组显示出来,内详。。。 如何设置打印机DPI 项目中的类按类名生成多个dll Access 为什么保存不了数据 如何用C#代码判断某TextBox的内容是否为邮箱? C#中怎么用全局变量 在richtextbox中,e.linktext可不可以多加些信息,但不要显示出来 如何通过gridview控件添加一列,同时数据库中的表也添加一列。 明天去买书.介绍几本C#的好书来 什么是“虚方法"?以及如何调用? 委托使用情景 如何实现按钮的右侧显示
这就好比一个Word或者Excel的操作员学习编程。对你来说,定义一个变量,或者调用一个函数,是具体的方法,对于打字操作员来说,这些就抽象了,对他来说,点哪个菜单,在哪里输入哪几条语句才是具体的解决方案。设计模式就是这样,本身是给有具体解决方法的人提供更高层次的抽象的。你连具体实现都没学会,学设计模式有什么意义呢。
http://topic.csdn.net/u/20120103/14/ab3582e6-0988-4cfb-8684-6f8e94adb6fe.html至于策略模式,其实也用不到了。
匿名委托和Lambda表达式把分离策略算法的工作简化到了极致。