设计模式和C#
十期刘杰
这个作者很懒,什么都没留下…
展开
-
设计模式之策略模式
何为策略,就是可以实现目标的方案集合。而完成一项任务有不同的方式,每一种方式称为一个策略。策略模式就是定义一系列算法,将每一个算法封装起来,并让他们可以相互替换。很简单的一个例子:年底移动公司推出很多的活动,比如说:存话费赠食用油,交话费赠话费,买手机赠话费等等。推出这些个活动目的就只有一个,刺激消费为公司创造利润,而我们可以将这些个活动当做一个一个的策略,如下:abstract clas原创 2014-02-05 10:36:59 · 3065 阅读 · 24 评论 -
DataGridView的高亮显示
再看视频的时候,看到视频上面有对DataGrid中的数据进行高亮显示实现功能,其中涉及到一个事件,是DataGrid1_ItemDataBound。实现的代码如下: 虽然视频上面可以实现,但是在VS2012中却没有这个事件,连控件名字也是不同的,在VS2012中有个控件和这个差不多,叫GridView,同样能实现这个功能,其实现此功能的名字叫RowDataBound,具体如下:原创 2014-07-26 10:18:46 · 2688 阅读 · 17 评论 -
循环遍历窗体控件
在做界面的时候,有的时候需要判断控件是否为空,如果窗体就有一个需要判断那无所谓,直接写一个函数调用就行。可是有的时候窗体中需要判断很多控件,比如说注册时那么多的信息都需要判断,还有就是组合查询一类的等等一些信息,这时候再用调用函数就显得异常麻烦了,因为每一个都需要进行判断,这得重复很多遍。当然有问题就有解决方法。因为判断的控件都是来自一个窗体,所以只需要编写一个函数,循环遍历窗体的每一个控件就原创 2014-05-28 09:47:06 · 1780 阅读 · 21 评论 -
设计模式之观察者模式与事件委托
1、观察者模式:定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。说简单点就是一个事物由于某个因素的变化而去提醒别的事物,让它们做出相应的改变。就像是猫叫了,老鼠跑了,人醒了。因素是猫叫,而猫这个实体去提醒老鼠和人,做出的反映分别是老鼠跑了,人醒了。代码如下://抽象类观察者abstract原创 2014-03-17 15:04:43 · 1211 阅读 · 11 评论 -
设计模式之六大原则
无规矩不成方圆,同样的设计模式也有其内定的一些规则,这些规则使得我们更加方面的使用设计模式的各种模式。以下简介六个原则1、单一职责原则定义:就一个类而言,应该仅有一个引起它变化的原因。解释:如果一个类承担的职责过多,则就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当发生变化时,设计会遭受到意想不到的破坏。举个例子如下:原创 2014-03-17 15:12:20 · 1147 阅读 · 13 评论 -
设计模式之建造者模式
建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。即组装一个完整的产品需要不同的部件,而由于部件的不同又可以组装出不相同的产品。 举个简单的例子:就像组装电脑,需要用显示器,主机,键盘,和鼠标。组装过程中如果显示器我分别用普通显示器和液晶显示器则会出现不相同的两个成品。如下:abstractclass Computer{ public abst原创 2014-03-07 11:39:47 · 1121 阅读 · 13 评论 -
设计模式之外观模式
外观模式:为子系统中的一组接口提供一个一直的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。即通过一个中类来完成客户端的请求。拿机房收费系统的上机过程来说,上机需要显示上机者的信息,填写上机状态表,填写上机记录表。而使用者不需要知道这些功能是怎么实现的,只需要通过界面操作就可以完成其功能。这个过程中界面就相当于外观。具体代码如下://显示上机信息classShowIn原创 2014-03-05 10:25:00 · 1149 阅读 · 16 评论 -
C#之重构与重载
1、先说重构,接着上一篇的例子,猫和狗类继承父类动物,但是他们都有叫这个方法,除了叫的声音不一样之外,其余的都是一样的,这样造成了代码的重复,如果要修改这个方法得同时修改这两个子类,非常的麻烦。这时候重构就起了很重要的作用。它将重复的代码提到父类,再加一个获得叫的方法就可以了。具体实现如下:classAnimal{ //将共有代码提到父类 protected override void原创 2014-01-27 17:29:17 · 2028 阅读 · 16 评论 -
设计模式之装饰模式
装饰模式:指在不必改变原类文件和使用继承的情况下动态的扩展一个对象的功能。简单一点说,装饰模式就是动态的给一个对象添加一些额外的职责,即对一个对象进行包装,使其成为一个看着顺眼的整体。即将每个要装饰的功能放在单独的类中,而提供一个类对要装饰的类的对象进行包装。 比如新买的房子,里面什么也没有,想要住进去首先需要装修,添加家电等,这个过程整体可以称为装饰,等最后放到我们眼前的就是一个完整而原创 2014-02-09 11:04:50 · 1326 阅读 · 16 评论 -
设计模式之代理模式
代理模式,为其它对象提供一种代理以控制对这个对象的访问。代理是真实对象的代表。说的简单点就是通过一个中介为我们完成某件事。举个简单的例子:就拿我们租房这件事来说,我们想要租房首先需要找到中介,由中介为我们联系房主,帮我们完成租房这一过程。用代码表示如下:class House-owner{ //房东类,用于定义和获取不同房东的名字 privatestring name; publi原创 2014-02-16 10:33:02 · 1214 阅读 · 14 评论 -
简单工厂 VS 工厂方法
1、工厂方法模式介绍: 工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪个类。工厂方法使一个类的实例化延迟到子类。还以简单工厂模式中的例子为例:将简单工厂模式中的工厂TV类提出来作为一个公共的接口,而对应的各个功能类各建立一个具体的工厂去实现这个接口。如下:Interface IFactory //工厂接口{ FunctionChoic原创 2014-02-26 14:09:55 · 1182 阅读 · 12 评论 -
设计模式之原型模式
原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。说白了就是将对象复制一遍,在将其赋给一个新的对象变量。由于这种方法太常用,所以.NET在System命名空间中提供了ICIoneable接口,其中就只有唯一的一个方法Clone(),实现了这个接口就可以完成原型模式。举个简单的例子:毕业找工作需要投递简历的,而复制则是一个非常方便的方法。转成代码则如下:class R原创 2014-02-28 20:51:02 · 1246 阅读 · 14 评论 -
设计模式之模板方法模式
模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可以重定义该算法的某些特定步骤。也就是说模板方法模式通过把不变的行为搬移到超类,去除子类中的重复代码,为代码复用提供了一个很好的平台。 就像我们平时参加的考试,每个人一张试卷,试卷上面的试题都是一样的,唯独可能不一样的地方就是每个人填写的答案。如果在PC环境中,出现每个人的试卷都原创 2014-03-03 19:10:02 · 1179 阅读 · 14 评论 -
C#中的面向对象
面向对象是一种设计思想,其实就是将一些功能进行封装,使得这个功能有一个可以使用的实体。比方说狗就可以当成一个对象,其完成的功能是叫。在C#中面向对象也是一样的,其也有三大属性:封装,继承,多态。下面就来看看是如何在C#中实现的。1、首先先说封装: 还是以狗叫为例,其功能为叫,按照一般的写法就会在主窗体里面写一下代码就可完成 Private void button1_Click(原创 2014-01-26 17:19:54 · 1092 阅读 · 17 评论 -
设计模式之简单工厂模式
所谓简单工厂模式其实就是把一些类进行包装,封装在一起,用到哪一个类的时候在实例化哪一个类。举个简单的例子就像家中的电视机,电视机上面有很多按钮,其中有菜单,有调节屏幕明亮程度的,有调节音量大小的。这些每一个按钮都会完成一个功能,而将这些封装起来的就是电视机,利用函数,通过参数的不同而返回不同的实例化对象。用代码表示则如下://功能选择类ClassFunctionChoice{ Publi原创 2014-02-04 14:33:12 · 1718 阅读 · 20 评论 -
C#之virtual 和abstract
前几天看到文哲的博客中有一个关于virtual和 abstract的区别问题。可以说当时也是模棱两可,也不太确定具体有什么区别,今天查了查,稍微有点收获,希望对您有所帮助:1、先说虚方法 virtual虚方法有自己的函数体,已经提供了函数实现,但是允许在子类中重写或覆盖。重写的子类虚函数就是被覆盖了。下面就来具体举个例子来说明一下:首先建立父类Animal,其中包含虚方法原创 2014-01-28 16:22:19 · 1140 阅读 · 17 评论 -
GridView中HyperLink的NavigateUrl属性的链接地址带参数出错的问题
问题描述:HyperLink控件的NavigateUrl=’~/PersonalManage/userInfo.aspx?uid=’ 运行结果,链接变成: http://localhost:15859/ShowPetByTypeID.aspx?TypeID= 也就是说绑定部分没有被解析 解决方法:首先找到GridView的属性Columns,打开集合如下对话框原创 2014-07-28 15:27:29 · 2198 阅读 · 11 评论