
C# 设计模式
Leeyuen_Vector
这个作者很懒,什么都没留下…
展开
-
单例模式——C#设计模式一
原文地址:点击打开链接原文作者:Learning hard原文出处:博客园一、引言最近在设计模式的一些内容,主要的参考书籍是《Head First 设计模式》,同时在学习过程中也查看了很多博客园中关于设计模式的一些文章的,在这里记录下我的一些学习笔记,一是为了帮助我更深入地理解设计模式,二同 时可以给一些初学设计模式的朋友一些参考。首先我介绍的是设计模式中比较简单的一个模式——单例模式(因...转载 2019-07-04 10:14:54 · 200 阅读 · 0 评论 -
模板方法模式(Template Method)——C#设计模式十四
原文地址:http://www.cnblogs.com/zhili/p/TemplateMethodPattern.html原文作者:Learning hard一、引言提到模板,大家肯定不免想到生活中的“简历模板”、“论文模板”、“Word中模版文件”等,在现实生活中,模板的概念就是——有一个规定的格式,然后每个人都可以根据自己的需求或情况去更新它,例如简历模板,下载下来的简历模板的格式都是...转载 2019-07-06 15:49:04 · 136 阅读 · 0 评论 -
命令模式(Command Pattern)——C#设计模式十五
原文地址:http://www.cnblogs.com/zhili/p/CommandPattern.html原文作者:Learning hard一、前言之前一直在忙于工作上的事情,关于设计模式系列一直没更新,最近项目中发现,对于设计模式的了解是必不可少的,当然对于设计模式的应用那更是重要,可以说是否懂得应用设计模式在项目中是衡量一个程序员的技术水平,因为对于一个功能的实现,高级工程师和初级...转载 2019-07-06 15:53:32 · 152 阅读 · 0 评论 -
迭代器模式(Iterator Pattern)——C#设计模式十六
原文地址:http://www.cnblogs.com/zhili/p/IteratorPattern.html原文作者:Learning hard一、引言在上篇博文中分享了我对命令模式的理解,命令模式主要是把行为进行抽象成命令,使得请求者的行为和接受者的行为形成低耦合。在一章中,将介绍一下迭代器模式。下面废话不多说了,直接进入本博文的主题。二、迭代器模式的介绍迭代器是针对集合对象而生的...转载 2019-07-06 15:57:22 · 158 阅读 · 0 评论 -
观察者模式(Observer Pattern)——C#设计模式十七
原文地址:http://www.cnblogs.com/zhili/p/ObserverPattern.html原文作者:Learning hard一、引言在现实生活中,处处可见观察者模式,例如,微信中的订阅号,订阅博客和QQ微博中关注好友,这些都属于观察者模式的应用。在这一章将分享我对观察者模式的理解,废话不多说了,直接进入今天的主题。二、 观察者模式的介绍2.1 观察者模式的定义从...转载 2019-07-06 16:01:21 · 208 阅读 · 0 评论 -
中介者模式(Mediator Pattern)——C#设计模式十八
原文地址:http://www.cnblogs.com/zhili/p/MediatorPattern.html原文作者:Learning hard一、引言在现实生活中,有很多中介者模式的身影,例如QQ游戏平台,聊天室、QQ群和短信平台,这些都是中介者模式在现实生活中的应用,下面就具体分享下我对中介者模式的理解。二、 中介者模式的介绍2.1 中介者模式的定义从生活中的例子可以看出,不论...转载 2019-07-06 19:34:36 · 231 阅读 · 0 评论 -
状态者模式(State Pattern)——C#设计模式十九
原文地址:http://www.cnblogs.com/zhili/p/StatePattern.html原文作者:Learning hard一、引言在上一篇文章介绍到可以使用状态者模式和观察者模式来解决中介者模式存在的问题,在本文中将首先通过一个银行账户的例子来解释状态者模式,通过这个例子使大家可以对状态者模式有一个清楚的认识,接着,再使用状态者模式来解决上一篇文章中提出的问题。二、状态...转载 2019-07-06 19:38:00 · 258 阅读 · 0 评论 -
策略者模式(Stragety Pattern)——C#设计模式二十
原文地址:http://www.cnblogs.com/zhili/p/StragetyPattern.html原文作者:Learning hard一、引言前面主题介绍的状态模式是对某个对象状态的抽象,而本文要介绍的策略模式也就是对策略进行抽象,策略的意思就是方法,所以也就是对方法的抽象,下面具体分享下我对策略模式的理解。二、策略者模式介绍2.1 策略模式的定义在现实生活中,策略模式的...转载 2019-07-06 19:39:49 · 278 阅读 · 0 评论 -
责任链模式——C#设计模式二一
原文地址:http://www.cnblogs.com/zhili/p/ChainOfResponsibity.html原文作者:Learning hard一、引言在现实生活中,有很多请求并不是一个人说了就算的,例如面试时的工资,低于1万的薪水可能技术经理就可以决定了,但是1万~1万5的薪水可能技术经理就没这个权利批准,可能就需要请求技术总监的批准,所以在面试的完后,经常会有面试官说,你这个...转载 2019-07-06 19:43:28 · 164 阅读 · 0 评论 -
访问者模式(Vistor Pattern)——C#设计模式二二
原文地址:http://www.cnblogs.com/zhili/p/VistorPattern.html原文作者:Learning hard一、引言在上一篇博文中分享了责任链模式,责任链模式主要应用在系统中的某些功能需要多个对象参与才能完成的场景。在这篇博文中,我将为大家分享我对访问者模式的理解。二、访问者模式介绍2.1 访问者模式的定义访问者模式是封装一些施加于某种数据结构之上的...转载 2019-07-06 19:45:56 · 175 阅读 · 0 评论 -
备忘录模式(Memento Pattern)——C#设计模式二三
原文地址:http://www.cnblogs.com/zhili/p/MementoPattern.html原文作者:Learning hard一、引言在上一篇博文分享了访问者模式,访问者模式的实现是把作用于某种数据结构上的操作封装到访问者中,使得操作和数据结构隔离。而今天要介绍的备忘者模式与命令模式有点相似,不同的是,命令模式保存的是发起人的具体命令(命令对应的是行为),而备忘录模式保存...转载 2019-07-06 19:49:06 · 331 阅读 · 0 评论 -
代理模式(Proxy Pattern)——C#设计模式十三
原文地址:http://www.cnblogs.com/zhili/p/ProxyPattern.html原文作者:Learning hard一、引言在软件开发过程中,有些对象有时候会由于网络或其他的障碍,以至于不能够或者不能直接访问到这些对象,如果直接访问对象给系统带来不必要的复杂性,这时候可以在客户端和目标对象之间增加一层中间层,让代理对象代替目标对象,然后客户端只需要访问代理对象,由代...转载 2019-07-06 15:46:37 · 131 阅读 · 0 评论 -
享元模式(Flyweight Pattern)——C#设计模式十二
原文地址:http://www.cnblogs.com/zhili/p/FlyweightPattern.html原文作者:Learning hard一、引言在软件开发过程,如果我们需要重复使用某个对象的时候,如果我们重复地使用new创建这个对象的话,这样我们在内存就需要多次地去申请内存空间了,这样可能会出现内存使用越来越多的情况,这样的问题是非常严重,然而享元模式可以解决这个问题,下面具体...转载 2019-07-06 15:44:28 · 137 阅读 · 0 评论 -
简单工厂模式——C#设计模式二
一、引言这个系列也是自己对设计模式的一些学习笔记,希望对一些初学设计模式的人有所帮助的,在上一个专题中介绍了单例模式,在这个专题中继续为大家介绍一个比较容易理解的模式——简单工厂模式。二、简单工厂模式的介绍说到简单工厂,自然的第一个疑问当然就是什么是简单工厂模式了? 在现实生活中工厂是负责生产产品的,同样在设计模式中,简单工厂模式我们也可以理解为负责生产对象的一个类, 我们平常编程中,当使用...转载 2019-07-04 10:21:01 · 175 阅读 · 0 评论 -
工厂方法模式——C#设计模式三
一、引言在简单工厂模式中讲到简单工厂模式的缺点,有一点是——简单工厂模式系统难以扩展,一旦添加新产品就不得不修改简单工厂方法,这样就会造成简单工厂的实现逻辑过于复杂,然而本专题介绍的工厂方法模式可以解决简单工厂模式中存在的这个问题,下面就具体看看工厂模式是如何解决该问题的。二、工厂方法模式的实现工厂方法模式之所以可以解决简单工厂的模式,是因为它的实现把具体产品的创建推迟到子类中,此时工厂类不...转载 2019-07-04 10:23:08 · 159 阅读 · 0 评论 -
抽象工厂模式——C#设计模式四
一、引言在上一专题中介绍了工厂方法模式,工厂方法模式是为了克服简单工厂模式的缺点而设计出来的,简单工厂模式的工厂类随着产品类的增加需要增加额外的代码),而工厂方法模式每个具体工厂类只完成单个实例的创建,所以它具有很好的可扩展性。但是在现实生活中,一个工厂只创建单个产品这样的例子很少,因为现在的工厂都多元化了,一个工厂创建一系列的产品,如果我们要设计这样的系统时,工厂方法模式显然在这里不适用,然后...转载 2019-07-04 11:23:25 · 158 阅读 · 0 评论 -
建造者模式(Builder Pattern)——C#设计模式五
一、引言在软件系统中,有时需要创建一个复杂对象,并且这个复杂对象由其各部分子对象通过一定的步骤组合而成。例如一个采购系统中,如果需要采购员去采购一批电脑时,在这个实际需求中,电脑就是一个复杂的对象,它是由CPU、主板、硬盘、显卡、机箱等组装而成的,如果此时让采购员一台一台电脑去组装的话真是要累死采购员了,这里就可以采用建造者模式来解决这个问题,我们可以把电脑的各个组件的组装过程封装到一个建造者类...转载 2019-07-04 11:25:39 · 164 阅读 · 0 评论 -
原型模式(Prototype Pattern)——C#设计模式六
一、引言在软件系统中,当创建一个类的实例的过程很昂贵或很复杂,并且我们需要创建多个这样类的实例时,如果我们用new操作符去创建这样的类实例,这未免会增加创建类的复杂度和耗费更多的内存空间,因为这样在内存中分配了多个一样的类实例对象,然后如果采用工厂模式来创建这样的系统的话,随着产品类的不断增加,导致子类的数量不断增多,反而增加了系统复杂程度,所以在这里使用工厂模式来封装类创建过程并不合适,然而原...转载 2019-07-04 12:51:45 · 138 阅读 · 0 评论 -
适配器模式(Adapter Pattern)——C#设计模式七
原文地址:http://www.cnblogs.com/zhili/p/AdapterPattern.html原文作者:Learning hard一、引言在实际的开发过程中,由于应用环境的变化(例如使用语言的变化),我们需要的实现在新的环境中没有现存对象可以满足,但是其他环境却存在这样现存的对象。那么如果将“将现存的对象”在新的环境中进行调用呢?解决这个问题的办法就是我们本文要介绍的适配器模...转载 2019-07-06 15:16:41 · 153 阅读 · 0 评论 -
桥接模式(Bridge Pattern)——C#设计模式八
原文地址:http://www.cnblogs.com/zhili/p/BridgePattern.html原文作者:Learning hard一、引言这里以电视遥控器的一个例子来引出桥接模式解决的问题,首先,我们每个牌子的电视机都有一个遥控器,此时我们能想到的一个设计是——把遥控器做为一个抽象类,抽象类中提供遥控器的所有实现,其他具体电视品牌的遥控器都继承这个抽象类,具体设计类图如下:...转载 2019-07-06 15:31:14 · 146 阅读 · 0 评论 -
装饰者模式(Decorator Pattern)——C#设计模式九
原文地址:http://www.cnblogs.com/zhili/p/DecoratorPattern.html原文作者:Learning hard一、引言在软件开发中,我们经常想要对一类对象添加不同的功能,例如要给手机添加贴膜,手机挂件,手机外壳等,如果此时利用继承来实现的话,就需要定义无数的类,如StickerPhone(贴膜是手机类)、AccessoriesPhone(挂件手机类)等...转载 2019-07-06 15:36:10 · 149 阅读 · 0 评论 -
组合模式(Composite Pattern)——C#设计模式十
原文地址:http://www.cnblogs.com/zhili/p/CompositePattern.html原文作者:Learning hard一、引言在软件开发过程中,我们经常会遇到处理简单对象和复合对象的情况,例如对操作系统中目录的处理就是这样的一个例子,因为目录可以包括单独的文件,也可以包括文件夹,文件夹又是由文件组成的,由于简单对象和复合对象在功能上区别,导致在操作过程中必须区...转载 2019-07-06 15:39:29 · 151 阅读 · 0 评论 -
外观模式(Facade Pattern)——C#设计模式十一
原文地址:http://www.cnblogs.com/zhili/p/FacadePattern.html原文作者:Learning hard一、引言在软件开发过程中,客户端程序经常会与复杂系统的内部子系统进行耦合,从而导致客户端程序随着子系统的变化而变化,然而为了将复杂系统的内部子系统与客户端之间的依赖解耦,从而就有了外观模式,也称作 ”门面“模式。下面就具体介绍下外观模式。二、外观模...转载 2019-07-06 15:42:11 · 124 阅读 · 0 评论 -
C#设计模式归纳
一、引言经过这段时间对设计模式的学习,自己的感触还是很多的,因为我现在在写代码的时候,经常会想想这里能不能用什么设计模式来进行重构。所以,学完设计模式之后,感觉它会慢慢地影响到你写代码的思维方式。这里对设计模式做一个总结,一来可以对所有设计模式进行一个梳理,二来可以做一个索引来帮助大家收藏。PS: 其实,很早之前我就看过所有的设计模式了,但是并没有写博客,但是不久就很快忘记了,也没有起到什么作...转载 2019-07-06 20:47:00 · 332 阅读 · 0 评论