使用地道的 C# 语言来表现设计模式
--------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- C#中加入了IEnumerable接口及foreach in语句,迭代模式基本可以被撤销了 --------------------编程问答-------------------- 不懂啥叫设计模式~只会封装~ --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 还有yield. --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 对于迭代来说,if (tn.Nodes.Count > 0) 的判断有点多余。。。 --------------------编程问答-------------------- C# 是支持闭包的
.net 4.0 版本已经加入了动态语言的接口
--------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 随着框架越来越成熟编译器越来越强大,我们会忘掉很多的设计模式,但丢不掉的是代码重构 --------------------编程问答-------------------- lamda表达式是不是涉及到了很多中设计模式? --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 工厂和单键常用,其他的本人用的不多 --------------------编程问答-------------------- yield 是c#中很优雅的语法糖之一,相当好用! --------------------编程问答-------------------- --------------------编程问答-------------------- 好多模式都集成到语言了, 观察者也可以用event来代替了 --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答--------------------
是的。很明显,设计模式的很多动机就是将一部分实现推迟给调用者,实现扩展、重用。很明显lambda表达式是最方便和轻量的方式(优于继承和接口,也优于命名委托和匿名委托)。 --------------------编程问答-------------------- 简单工厂模式(SimpleFactory) 抽象工厂(AbstractFactory) --------------------编程问答-------------------- --------------------编程问答-------------------- 很明显,设计模式的很多动机就是将一部分实现推迟给调用者,实现扩展、重用。
--------------------------------------------------------------
这个我不赞同,可能你实际的理解也不止如此,只是现在的描述没有说到本质。
是不是可以重新归纳一下 --------------------编程问答--------------------
我错了。。。 --------------------编程问答-------------------- 别多想哈~
只是觉得你能总结的更好 ~ 又或者说能更贴近本质。
--------------------编程问答-------------------- --------------------编程问答-------------------- 个人看法:从没看过设计模式的书,但是我认为写得简单明了,容易被人看得懂,不会被某种模式而模式的代码,效率也不错的代码结构就是好的设计模式吧!! --------------------编程问答-------------------- 只学过一些脚本语言,没有学过C#,但是看楼主的代码看得挺舒服的,真的很不错,学习了! --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 还停留在vs系列的简单面向对象上没升级到这个程度,看了lz的东西很受启发。
学无止尽啊………… --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 如果我因代码需要而去调用已封装好的方法,但又觉得不能满足自己的要求,Override 重新写一个,这是否涉及到贴中所说的设计模式? --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 来了,dynamic 对象~ --------------------编程问答-------------------- MARK STUDY --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 正在研究一些常用的Design Pattern --------------------编程问答-------------------- 工厂和单键常用,其他的本人用的不多 --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 学习 不过初学者最好还是学下设计模式 了解下大师们是怎么去解决问题的 --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- //设计模式的很多动机就是将一部分实现推迟给调用者,实现扩展、重用
我的理解是:
设计模式的动机是让代码更贴近事实(逻辑)
很多代码实现,太注重语言层次,导致代码与逻辑脱钩,导致逻辑变化时,代码修改代价不成正比,最终导致项目失控.
这是我的理解,不知道你们怎么思考的.
--------------------编程问答-------------------- 请教下 第一个例子里面
public static IEnumerable<TreeNode> GetAllNodes(this TreeView treeview)
能编译过吗?
TreeViewNodeIterator
是怎么扩展到TreeView 上去的?
foreach (TreeNode tn in treeView1.GetAllNodes())
是不是
foreach (TreeNode tn in TreeViewNodeIterator.GetAllNodes(treeView1))
??第一个例子的代码我真没搞明白,请教了
--------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答--------------------
这个例子需要C# 3.0(C# 2008)以上才能编译。参考MSDN的扩展方法。 --------------------编程问答--------------------
直接继承就可以了。并不涉及到设计模式。 --------------------编程问答-------------------- --------------------编程问答-------------------- 看到楼主我有点自惭形秽了。。 --------------------编程问答-------------------- --------------------编程问答--------------------
补充:.NET技术 , C#