设计模式(C#) - 组合模式(Composite Pattern) 2017年02月06日 65 阅读 设计模式(C#) - 组合模式(Composite Pattern)2010-05-26 cnblogs webabcd返回“”介绍将对象组合成树形结构以表示“部分-整体”的层次结构。它使得客户对单个对象和复合对象的使用具有一致性。示例有一个Message实体类,使其单个对象和复合对象具有一致性。...
设计模式(C#) - 装饰模式(Decorator Pattern) 2017年02月06日 65 阅读 设计模式(C#) - 装饰模式(Decorator Pattern)2010-05-26 cnblogs webabcd返回“”介绍动态地给一个对象添加一些额外的职责。就扩展功能而言,它比生成子类方式更为灵活。示例有一个Message实体类,某个对象对它的操作有Insert()和Get()方法,现在扩展这个对象的功能。...
设计模式(C#) - 外观模式(Facade Pattern) 2017年02月06日 65 阅读 设计模式(C#) - 外观模式(Facade Pattern)2010-05-26 cnblogs webabcd返回“”介绍为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。示例有一个Message实体类,某对象对它的操作有Get()方法,另外还有一个对象有一个Validate()方法来判断用户是否有权限。现在提供一个高层接口来封装这两个方法。...
设计模式(C#) - 享元模式(Flyweight Pattern) 2017年02月06日 83 阅读 设计模式(C#) - 享元模式(Flyweight Pattern)2010-05-26 cnblogs webabcd返回“”介绍运用共享技术有效地支持大量细粒度的对象。示例有一个Message实体类,某些对象对它的操作有Insert()和Get()方法,现在要运用共享技术支持这些对象。MessageModelusing System;using System.Collections.Generic;using System.Te...
设计模式(C#) - 代理模式(Proxy Pattern) 2017年02月06日 59 阅读 设计模式(C#) - 代理模式(Proxy Pattern)2010-05-26 cnblogs webabcd返回“”介绍为其他对象提供一个代理以控制对这个对象的访问。示例有一个Message实体类,某对象对它的操作有Insert()和Get()方法,用一个代理来控制对这个对象的访问。MessageModelusing System;using System.Collections.Generic;using System.Tex...
设计模式(C#) - 责任链模式(Chain of Responsibility Pattern) 2017年02月06日 67 阅读 设计模式(C#) - 责任链模式(Chain of Responsibility Pattern)2010-05-26 cnblogs webabcd返回“”介绍为解除请求的发送者和接收者之间耦合,而使多个对象都有机会处理这个请求。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它。示例有一个Message实体类,某个类对它的操作有Insert()方法。现在要求根据插入信息的字符长度,让不同的对象去处理,这些对象连成...
设计模式(C#) - 命令模式(Command Pattern) 2017年02月06日 70 阅读 设计模式(C#) - 命令模式(Command Pattern)2010-05-26 cnblogs webabcd返回“”介绍将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可取消的操作。示例有一个Message实体类,某个类对它的操作有Insert()和Delete()方法。现在要求可以对之前的所有操作做撤销和重复。MessageModelusing System;using ...
设计模式(C#) - 解释器模式(Interpreter Pattern) 2017年02月06日 66 阅读 设计模式(C#) - 解释器模式(Interpreter Pattern)2010-05-26 cnblogs webabcd返回“”介绍给定一个语言, 定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。示例有一个Message实体类,某个类对它的操作有Get()方法。现在要求用具有某一规则的中文语法来执行这个操作。...
设计模式(C#) - 迭代器模式(Iterator Pattern) 2017年02月06日 64 阅读 设计模式(C#) - 迭代器模式(Iterator Pattern)2010-05-26 cnblogs webabcd返回“”介绍提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示。示例有一个Message实体类,某聚合对象内的各个元素均为该实体对象,现在要提供一种方法顺序地访问这个聚合对象中的各个元素。MessageModelusing System;using System.Collections.Gen...
设计模式(C#) - 中介者模式(Mediator Pattern) 2017年02月06日 66 阅读 设计模式(C#) - 中介者模式(Mediator Pattern)2010-05-26 cnblogs webabcd返回“”介绍用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。示例有一个Message实体类,某个对象对它的操作有Send()和Insert()方法,现在用一个中介对象来封装这一系列的对象交互。...
设计模式(C#) - 备忘录模式(Memento Pattern) 2017年02月06日 63 阅读 设计模式(C#) - 备忘录模式(Memento Pattern)2010-05-26 cnblogs webabcd返回“”介绍在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到保存的状态。示例有一个Message实体类,某个对象对它的操作有Insert()方法,只有在插入时间符合要求的情况下才能插入成功,因此要求可以保存和恢复Message对象的状态,插入失败后则恢复Messa...
设计模式(C#) - 状态模式(State Pattern) 2017年02月06日 58 阅读 设计模式(C#) - 状态模式(State Pattern)2010-05-26 cnblogs webabcd返回“”介绍允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它所属的类。示例有一个Message实体类,对它的操作有Insert()和Get()方法,持久化数据在SqlServer数据库中或Xml文件里。在对象内部可以根据用户的不同选择不同的数据持久化方案。...
设计模式(C#) - 策略模式(Strategy Pattern) 2017年02月06日 62 阅读 设计模式(C#) - 策略模式(Strategy Pattern)2010-05-26 cnblogs webabcd返回“”介绍定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法的变化可独立于使用它的客户。示例有一个Message实体类,对它的操作有Insert()和Get()方法,持久化数据在SqlServer数据库中或Xml文件里(两种可互换的算法)。由客户端决定使用哪种算法。MessageModel...
设计模式(C#) - 模板方法模式(Template Method Pattern) 2017年02月06日 64 阅读 设计模式(C#) - 模板方法模式(Template Method Pattern)2010-05-26 cnblogs webabcd返回“”介绍定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。示例有一个Message实体类,对它的操作有Get()方法,每次Get()之前要使用ValidateUser()方法来检查当前用户是否有权限...
设计模式(C#) - 访问者模式(Visitor Pattern) 2017年02月06日 62 阅读 设计模式(C#) - 访问者模式(Visitor Pattern)2010-05-26 cnblogs webabcd返回“”介绍表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。示例有一个Message实体类,某些对象对它的操作有Insert()和Get()方法,现在要针对其中某一方法进行操作。...
设计模式(C#) - 提供者模式(Provider Pattern) 2017年02月06日 63 阅读 设计模式(C#) - 提供者模式(Provider Pattern)2010-05-26 cnblogs webabcd返回“”示例有一个Message实体类,对它的操作有Insert()和Get()方法,持久化数据在SqlServer数据库中或Xml文件里。根据配置文件中的配置来决定数据持久化方案是使用SqlServer数据库还是Xml文件。...
C#实现扫雷出炉 2017年02月06日 67 阅读 C#实现扫雷出炉2010-06-05 博客园 magicdlf前阵子想用C#写个扫雷,检验一下学习一年多C#的功力如何。扫雷的基本实现很简单,动态生成控件,然后用Controls.Add添加到窗口中,用随机数布雷,处理Mouse事件...最麻烦的事情不过是在点到空白地带的时候需要实现一个FloodFill算法。不过要实现一个十分接近Windows扫雷的版本,还是需要费一些周折的。首先需要找到资源文件,我是在百度知道上搜到的,或者从扫雷的资源文件里读取也可以...
C#写的网络版斗地主 2017年02月06日 60 阅读 C#写的网络版斗地主2010-06-05 博客园 猪笨无罪断断续续写了一个月,总算是把这个东西搞出来了。第一次写网络程序,所以网络部分很烂,如果网络延迟厉害的话就会出错。出牌规则和牌组之间的比较已经比较完善,能想到的组合方式都写上去了。由于本人学习C#的时间不长,而且是利用业余时间学习。所以技术不怎么样,写出来的代码总共2147行。质量个人觉得比较差劲,刚开始架构整个程序时还是按照面向对象的思考方式架构整个程序,但是架构了一部分之后后面的东西,比如网络,规...
C#网络版斗地主——网络部分实现 2017年02月06日 74 阅读 C#网络版斗地主——网络部分实现2010-06-05 博客园 猪笨无罪本文是对C#网络版斗地主的总结,之后还有两篇,分别介绍地主权限的传递和出牌权限的传递,还有出牌算法和规则。服务器使用server类与客户端通讯,客户端使用client类与服务器通讯。当创建游戏时,new出一个server对象,并且开始监听默认端口“1991”。然后创建一个线程,用死循环while(true)检测是否有客户端连接,如果有的话获取Client对象,当获...
C#网络版斗地主——地主权限的传递 2017年02月06日 60 阅读 C#网络版斗地主——地主权限的传递2010-06-05 博客园 猪笨无罪本文是对C#网络版斗地主的总结。首先服务器使用一个随机数来随即选出默认地主。然后发送信息给选出来的玩家。玩家接收到信息后显示两个按钮“叫地主”,“不叫”。如果选择不叫,则把可以叫地主的权限发送给另外一个玩家,如果另外两个玩家都不要的话,就执行Restart()方法重新发牌。叫地主权限的传递顺序如下图所示:具体实现方法:服务器得到一个1-3...