(50)C#设计模式总结

创建型模式 创建型模式就是用来创建对象的模式,抽象了实例化的过程。所有的创建型模式都有两个共同点。 都将系统使用哪些具体类的信息封装起来 隐藏了这些类实例时如何被创建和组织的 单例模式 解决的是对象实例化的个数问题,比如抽象工厂中的工厂,对象池等,除了Singleton之外,其他...

2018-09-28 14:22:59

阅读数 89

评论数 0

(49)C#设计原则

使用 使用设计模式的根本原因是适应变化,提高代码复用率,是软件更具有可维护性和可扩展性。并且,在进行设计的时候,也需要遵循以下几个原则:单一职责原则、开放封闭原则、里氏替换原则、依赖导致原则、接口隔离原则、合成复用原则和迪米特法则。 单一职责原则 就一个类而言,应该只有一个引起它变化的原因。如果一...

2018-09-26 16:00:49

阅读数 90

评论数 0

(48)C#设计模式—— 备忘录模式(Memento Pattern)

引言 今天介绍的备忘录模式与命令模式有些相似,不同的是,命令模式保存的是发起人的具体命令(命令对应的是行为),而备忘录模式保存的是发起人的状态(状态对应的数据结构,如属性)。 定义 从字面意思就可以明白,备忘录模式就是对某个类的状态进行保存,等到需要回复的时候,可以从备忘录中进行恢复。生活中这样的...

2018-09-20 16:58:00

阅读数 92

评论数 0

(47)C#设计模式—— 访问者模式(Vistor Pattern)

定义 访问者模式是封装一些施加于某种数据结构之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构则可以保持不变。访问者模式适用于数据结构相对稳定的系统,它把数据结构和作用于数据结构之上的操作之间的耦合度降低,使得操作集合可以相对自由地改变。 数据结构的每一个节点都可以接受一个访问者的调用,...

2018-09-20 16:01:04

阅读数 49

评论数 0

(46)C#设计模式—— 责任链模式

引言 在现实生活中,有很多请求并不是一个人说了算,例如面试时的工资,地狱1万的可能技术经理就可以决定了,但是1万到1万5的公司可能技术经理就没这个权利批准,可能就需要请求技术总监的批准,所以面试的话,经常会有面试者说,你这个薪水我觉得你这技术可以拿这个薪水的,但是还需要技术总监的批准等话。这个例子...

2018-09-20 14:53:39

阅读数 163

评论数 0

(45)C#设计模式—— 策略者模式(Stragety Pattern)

定义 在现实生活中,策略模式的例子也非常常见,例如,中国的所得税,分为企业所得税、外商投资企业或外商企业所得税和个人所得税,针对这3种所得税,针对每种,所计算的方式不同,个人所得税有个人所得税的计算方式,而企业所得税有其对应的计算方式。如果不采用策略模式来实现这样一个需求,可能我们会定义一个所得税...

2018-09-19 15:23:19

阅读数 37

评论数 0

(44)C#设计模式——状态者模式(State Pattern)

介绍 每个对象都有其对的状态,而每个状态有对应一些相应的行为,如果多个对象有多个状态,那么就会对应很多种行为。那么对这些状态的判断和根据状态完成的行为,就会导致多重条件语句,并且如果添加一种新的状态时,需要更改之前的代码。这样设计显然违背了开闭原则。状态模式正是用来解决这样的问题的。状态模式将每...

2018-09-19 14:52:18

阅读数 44

评论数 0

(43)C#设计模式——中介者模式(Mediator Pattern)

定义 从生活中的例子可以看出,不论是QQ群还是QQ游戏,他们都是充当一个中间平台,QQ用户可以登录这个中间平台与其他QQ用户交流,如果没有这些中间平台,我们想与朋友聊天的话,可能就需要面对面才行了。电话,短信也是一样的,有了这个中间平台。每个用户都不用直接依赖于其他用户,只需要依赖这个平台就可以...

2018-09-14 17:19:30

阅读数 52

评论数 0

(42)C#设计模式——观察者模式(Observer Pattern)

定义 从生活中的例子可以看出,只要对订阅号关注的客户端,如果订阅号有什么更新,就会直接推送给订阅了的客户端。从中,我们可以理解观察者模式的定义。 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听一个主题对象,这个主题对象在状态发生改变时,会通知所有观察者对象,使它们能够自动更新自...

2018-09-14 16:43:17

阅读数 41

评论数 0

(41)C#设计模式——迭代器模式(Iterator Pattern)

介绍 迭代器是针对集合对象而产生的,对于 集合对象而言,必然涉及到集合元素的添加、删除等操作,同时肯定也支持遍历集合元素的操作,我们可以把遍历操作也放在集合对象中,但这样的话,集合对象就承担太多的责任了,面向对象中有一条设计原则是单一职责原则,所以我们要尽可能的分离这些职责,用不同的类去承担不同...

2018-09-14 14:34:48

阅读数 120

评论数 0

(40)C#设计模式——命令模式(Command Pattern)

定义 命令模式属于对象的行为模式。命令模式是把一个操作或者行为抽象到一个对象中,通过命令的抽象化使发出命令的责任和执行命令的责任分离开。命令模式的实现可以提供命令的撤销和回复功能 结构 既然命令模式是把发出命令的责任和执行命令的责任分隔开,那么中间就必须有某个对象来帮助发出命令者来传达命令,...

2018-09-11 15:26:46

阅读数 127

评论数 0

(38)C#设计模式——代理模式(Proxy Pattern)

引言 在软件开发过程中,有些对象有时候会由于网络或其他障碍,以至于不能够或者不能直接访问到这些对象,如果直接访问对象给系统带来不必要的复杂性,这时候可以在客户端和目标对象之间增加一层中间层,让代理对象代替目标对象,然后客户端只需要访问代理对象,由代理对象去帮我们请求目标对象并返回结果给客户端,这...

2018-09-11 14:30:48

阅读数 45

评论数 0

(37)C#设计模式——享元模式(Flyweight Pattern)

引言 在软件开发过程中,如果我们要重复使用某个对象的时候,重复使用new创建这个对象的话,这样我们在内存就要多次地去申请内存空间,这样可能会出现内存使用越来越多的情况,这种问题是非常严重的,使用享元模式可以结局这个问题。 详细介绍 上面说了,享元模式可以解决重复使用对象导致内存使用越来越多的...

2018-09-11 11:12:56

阅读数 49

评论数 0

(36)C#设计模式—— 外观模式(Facade Pattern)

引言 在软件开发过程中,客户端经常会与复杂系统的内部子系统进行耦合,从而导致客户端程序跟着子系统的变化而变化,然而为了将复杂系统的内部子系统与客户端之间的以来解耦,从而就有了外观模式。 详细介绍 定义:外观模式提供一个统一的接口,用来访问子系统中的一群接口。外观模式定义了一个高层接口,让子系...

2018-09-10 16:47:03

阅读数 34

评论数 0

(35)C#设计模式—— 组合模式(Composite Pattern)

引言 在软件开发过程中,我们经常会遇到处理简单对象和复合对象的情况,例如对操作系统中目录处理就是这样的一个例子,因为目录可以包括单独的文件,也可以包括文件夹,文件夹是由文件组成的,由于简单对象和复合对象在功能上的区别,导致在操作过程中必须区分简单对象和复合对象,这样就会导致客户调用带来不必要的麻...

2018-09-03 15:28:12

阅读数 37

评论数 0

(34)C#设计模式——装饰者模式(Decorator Pattern)

引言 在软件开发中,我们经常想要对一类对象添加不同的功能,例如要给手机添加贴膜、挂件、外壳等。如果此时使用继承来实现的话,我们就需要定义无数的类,这样会导致“子类爆炸”的问题。为了解决这个问题,可以使用装饰者模式来动态地给一个对象添加额外的职责。 装饰者模式的详细介绍 定义 装饰者模式以对...

2018-08-31 16:05:03

阅读数 96

评论数 0

(33)C#设计模式—— 桥接模式(Bridge Pattern)

引言 用一个电视遥控器的例子来引出桥接模式解决的问题。我们每个牌子的电视机都有一个遥控器,此时我们能想到的一个设计是——把遥控器作为一个抽象类,抽象类中提供遥控器的所有实现,其他具体电视品牌的遥控器都继承这个抽象类。这样的实现使得每部不同型号的电视机都有自己的遥控器实现。这样的设计对于电视机的改...

2018-08-31 15:23:16

阅读数 59

评论数 0

(32)C#设计模式——适配器模式(Adapter Pattern)

引言 在实际的开发过程中,由于应用环境的变化,我们需要的实现在新环境中没有现存对象可以满足,但是其他环境却存在这样现存的对象。如何在新环境中调用“现存的对象”呢?采用适配器模式可以解决。适配器模式使得新环境中不需要去重复实现已经存在了的实现,而很好的把现有的对象(指原来环境中的现有对象)加入到新...

2018-08-30 17:10:29

阅读数 203

评论数 0

(31)C#设计模式——原型模式(Prototype Parrern)

引言 在软件系统中,当创建一个类的实例的过程很昂贵或很复杂,并且我们需要创建多个这样类的实例时,如果我们使用new操作符去创建这样的类实例,这未免会增加创建类的复杂度和耗费更多的内存空间,因为这样在内存中分配多个一样的类实例对象。如果采用工厂模式来封装类创建这样的系统的话,随着产品类的不断增加,...

2018-08-28 17:09:55

阅读数 59

评论数 0

(30)C#设计模式——建造者模式(Builder Pattern)

引言 在软件系统中,有时需要创建一个复杂对象,并且这个复杂对象由其各部分子对象通过一定的步骤聚合而成。例如一个采购系统中,如果需要采购员去采购一批电脑,在这个实际需求中,电脑就是一个复杂的对象,它是由CPU、主板、硬盘、显卡、机箱等组装而成的,如果此时让采购员一台一台电脑去组装的话真是要累死他了...

2018-08-28 16:08:20

阅读数 111

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭