当前位置:编程学习 > C#/ASP.NET >>

使用地道的 C# 语言来表现设计模式

--------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- C#中加入了IEnumerable接口及foreach in语句,迭代模式基本可以被撤销了 --------------------编程问答-------------------- 不懂啥叫设计模式~
只会封装~ --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答--------------------
引用 13 楼 ojlovecd 的回复:
C#中加入了IEnumerable接口及foreach in语句,迭代模式基本可以被撤销了
还有yield. --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 对于迭代来说,if (tn.Nodes.Count > 0) 的判断有点多余。。。 --------------------编程问答-------------------- C# 是支持闭包的 
.net 4.0 版本已经加入了动态语言的接口 
--------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 随着框架越来越成熟编译器越来越强大,我们会忘掉很多的设计模式,但丢不掉的是代码重构 --------------------编程问答-------------------- lamda表达式是不是涉及到了很多中设计模式? --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 工厂和单键常用,其他的本人用的不多 --------------------编程问答-------------------- yield 是c#中很优雅的语法糖之一,相当好用! --------------------编程问答-------------------- --------------------编程问答-------------------- 好多模式都集成到语言了, 观察者也可以用event来代替了 --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答--------------------
引用 31 楼 kingdom_0 的回复:
lamda表达式是不是涉及到了很多中设计模式?

是的。很明显,设计模式的很多动机就是将一部分实现推迟给调用者,实现扩展、重用。很明显lambda表达式是最方便和轻量的方式(优于继承和接口,也优于命名委托和匿名委托)。 --------------------编程问答-------------------- 简单工厂模式(SimpleFactory)  抽象工厂(AbstractFactory) --------------------编程问答-------------------- --------------------编程问答-------------------- 很明显,设计模式的很多动机就是将一部分实现推迟给调用者,实现扩展、重用。
--------------------------------------------------------------
这个我不赞同,可能你实际的理解也不止如此,只是现在的描述没有说到本质。

是不是可以重新归纳一下 --------------------编程问答--------------------
引用 44 楼 sandy945 的回复:
很明显,设计模式的很多动机就是将一部分实现推迟给调用者,实现扩展、重用。
--------------------------------------------------------------
这个我不赞同,可能你实际的理解也不止如此,只是现在的描述没有说到本质。

是不是可以重新归纳一下

我错了。。。 --------------------编程问答-------------------- 别多想哈~

只是觉得你能总结的更好 ~ 又或者说能更贴近本质。
--------------------编程问答-------------------- --------------------编程问答--------------------      个人看法:从没看过设计模式的书,但是我认为写得简单明了,容易被人看得懂,不会被某种模式而模式的代码,效率也不错的代码结构就是好的设计模式吧!! --------------------编程问答--------------------     只学过一些脚本语言,没有学过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))

??第一个例子的代码我真没搞明白,请教了
--------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答--------------------
引用 92 楼 cxx1997 的回复:
请教下 第一个例子里面
 public static IEnumerable<TreeNode> GetAllNodes(this TreeView treeview)

能编译过吗?
TreeViewNodeIterator
是怎么扩展到TreeView 上去的?
foreach (TreeNode tn in treeView1.GetAllNodes())

是不是
for……

这个例子需要C# 3.0(C# 2008)以上才能编译。参考MSDN的扩展方法。 --------------------编程问答--------------------
引用 67 楼 feisheng512 的回复:
如果我因代码需要而去调用已封装好的方法,但又觉得不能满足自己的要求,Override 重新写一个,这是否涉及到贴中所说的设计模式?

直接继承就可以了。并不涉及到设计模式。 --------------------编程问答-------------------- --------------------编程问答-------------------- 看到楼主我有点自惭形秽了。。 --------------------编程问答-------------------- --------------------编程问答--------------------
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,