随笔分类 -  设计模式

C#设计模式总结
摘要:一、 设计原则 使用设计模式的根本原因是适应变化,提高代码复用率,使软件更具有可维护性和可扩展性。并且,在进行设计的时候,也需要遵循以下几个原则:单一职责原则、开放封闭原则、里氏代替原则、依赖倒置原则、接口隔离原则、合成复用原则和迪米特法则。下面就分别介绍了每种设计原则。 1.1 单一职责原则 就一 阅读全文

posted @ 2018-06-18 20:48 SuperSnowYao 阅读(548) 评论(1) 推荐(0) 编辑

【23】备忘录模式(Memento Pattern)
摘要:一、引言 在上一篇博文分享了访问者模式,访问者模式的实现是把作用于某种数据结构上的操作封装到访问者中,使得操作和数据结构隔离。而今天要介绍的备忘者模式与命令模式有点相似,不同的是,命令模式保存的是发起人的具体命令(命令对应的是行为),而备忘录模式保存的是发起人的状态(而状态对应的数据结构,如属性)。 阅读全文

posted @ 2018-06-18 19:38 SuperSnowYao 阅读(232) 评论(0) 推荐(0) 编辑

【22】访问者模式(Visitor Pattern)
摘要:一、引言 在这篇博文中,我将为大家分享我对访问者模式的理解。 二、访问者模式介绍 2.1 访问者模式的定义 访问者模式是封装一些施加于某种数据结构之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构则可以保存不变。访问者模式适用于数据结构相对稳定的系统, 它把数据结构和作用于数据结构之上的操 阅读全文

posted @ 2018-06-18 19:06 SuperSnowYao 阅读(191) 评论(1) 推荐(0) 编辑

【21】责任链模式
摘要:一、引言 在现实生活中,有很多请求并不是一个人说了就算的。例如面试时的工资,低于1万的薪水可能技术经理就可以决定了,但是1万~1万5的薪水可能技术经理就没这个权利批准,可能就需要请求技术总监的批准。所以在面试的完后,经常会有面试官说,你这个薪水我这边觉得你这技术可以拿这个薪水的,但是还需要技术总监的 阅读全文

posted @ 2018-06-18 18:19 SuperSnowYao 阅读(234) 评论(0) 推荐(0) 编辑

【20】策略者模式(Strategy Pattern)
摘要:一、引言 本文要介绍的策略模式也就是对策略进行抽象,策略的意思就是方法,所以也就是对方法的抽象,下面具体分享下我对策略模式的理解。 二、策略者模式介绍 2.1 策略模式的定义 在现实生活中,策略模式的例子也非常常见。例如,中国的所得税,分为企业所得税、外商投资企业或外商企业所得税和个人所得税。针对于 阅读全文

posted @ 2018-06-18 15:54 SuperSnowYao 阅读(232) 评论(0) 推荐(0) 编辑

【19】中间者模式(Mediator Pattern)
摘要:一、引言 在现实生活中,有很多中介者模式的身影,例如QQ游戏平台,聊天室、QQ群和短信平台,这些都是中介者模式在现实生活中的应用,下面就具体分享下我对中介者模式的理解。 二、 中介者模式的介绍 2.1 中介者模式的定义 从生活中的例子可以看出,不论是QQ游戏还是QQ群,它们都是充当一个中间平台。QQ 阅读全文

posted @ 2018-06-18 14:46 SuperSnowYao 阅读(431) 评论(0) 推荐(0) 编辑

【18】观察者模式(Observer Pattern)
摘要:一、引言 在现实生活中,处处可见观察者模式。例如,微信中的订阅号,订阅博客和QQ微博中关注好友,这些都属于观察者模式的应用。在这一章将分享我对观察者模式的理解,废话不多说了,直接进入今天的主题。 二、 观察者模式的介绍 2.1 观察者模式的定义 从生活中的例子可以看出,只要对订阅号进行关注的客户端, 阅读全文

posted @ 2018-06-18 13:54 SuperSnowYao 阅读(155) 评论(0) 推荐(0) 编辑

【17】迭代器模式(Iterator Pattern)
摘要:一、引言 在上篇博文中分享了我对命令模式的理解,命令模式主要是把行为进行抽象成命令,使得请求者的行为和接受者的行为形成低耦合。在这一章中,将介绍一下迭代器模式。 二、迭代器模式的介绍 迭代器是针对集合对象而生的。对于集合对象而言,必然涉及到集合元素的添加删除操作,同时也肯定支持遍历集合元素的操作。我 阅读全文

posted @ 2018-06-18 12:37 SuperSnowYao 阅读(205) 评论(0) 推荐(0) 编辑

【16】命令模式(Command Pattern)
摘要:一、前言 最近项目中发现,对于设计模式的了解是必不可少的,当然对于设计模式的应用那更是重要,可以说是否懂得应用设计模式在项目中是衡量一个程序员的技术水平,因为对于一个功能的实现,高级工程师和初级工程师一样都会实现,但是区别在于它们实现功能的可扩展和可维护性,也就是代码的是否“优美”、可读。但是,要更 阅读全文

posted @ 2018-06-18 10:40 SuperSnowYao 阅读(196) 评论(0) 推荐(0) 编辑

【15】模板方法模式(Template Method)
摘要:一、引言 提到模板,大家肯定不免想到生活中的“简历模板”、“论文模板”、“Word中模版文件”等。在现实生活中,模板的概念就是——有一个规定的格式,然后每个人都可以根据自己的需求或情况去更新它。例如简历模板,下载下来的简历模板的格式都是相同的,然而我们下载下来简历模板之后,我们可以根据自己的情况填充 阅读全文

posted @ 2018-06-18 00:32 SuperSnowYao 阅读(247) 评论(0) 推荐(0) 编辑

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

posted @ 2018-06-17 11:39 SuperSnowYao 阅读(281) 评论(0) 推荐(0) 编辑

【13】享元模式(FlyWeight Pattern)
摘要:一、引言 在软件开发过程,如果我们需要重复使用某个对象的时候,若重复地使用new创建这个对象的话,就需要多次地去申请内存空间了,这样可能会出现内存使用越来越多的情况,这样的问题是非常严重。享元模式可以解决这个问题,下面具体看看享元模式是如何去解决这个问题的。 二、享元模式的详细介绍 在前面说了,享元 阅读全文

posted @ 2018-06-16 22:24 SuperSnowYao 阅读(170) 评论(0) 推荐(0) 编辑

【12】外观模式(Facade Pattern)
摘要:一、引言 在软件开发过程中,客户端程序经常会与复杂系统的内部子系统进行耦合,从而导致客户端程序随着子系统的变化而变化。然而为了将复杂系统的内部子系统与客户端之间的依赖解耦,从而就有了外观模式,也称作“门面”模式。下面就具体介绍下外观模式。 二、外观模式的详细介绍 2.1 定义 外观模式提供了一个统一 阅读全文

posted @ 2018-06-16 19:50 SuperSnowYao 阅读(269) 评论(0) 推荐(0) 编辑

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

posted @ 2018-06-13 18:37 SuperSnowYao 阅读(217) 评论(0) 推荐(0) 编辑

【10-2】复杂业务状态的处理(从状态者模式到FSM)
摘要:一、概述 我们平常在开发业务模块时,经常会遇到比较复杂的状态转换。比如说用户可能有新注册、实名认证中、已实名认证、禁用等状态,支付可能有等待支付、支付中、已支付等状态。OA系统里的状态处理就更多了。 遇到这些处理,很多人可能不假思索的就用最直观的 if/else 或者 switch 来判断状态的方式 阅读全文

posted @ 2018-06-12 16:12 SuperSnowYao 阅读(1334) 评论(0) 推荐(0) 编辑

【10-1】状态者模式
摘要:一、状态者模式的介绍 每个对象都有其对应的状态,而每个状态又对应一些相应的行为,如果某个对象有多个状态时,那么就会对应很多的行为。那么对这些状态的判断和根据状态完成的行为,就会导致多重条件语句,并且如果添加一种新的状态时,需要更改之前现有的代码。这样的设计显然违背了开闭原则。状态模式正是用来解决这样 阅读全文

posted @ 2018-06-10 17:12 SuperSnowYao 阅读(191) 评论(0) 推荐(0) 编辑

【9】装饰者模式
摘要:一、引言 在软件开发中,我们经常想要对一类对象添加不同的功能。例如:要给手机添加贴膜,手机挂件,手机外壳等,如果此时利用继承来实现的话,就需要定义无数的类,如StickerPhone(贴膜是手机类)、AccessoriesPhone(挂件手机类)等,这样就会导致 ”子类爆炸“问题。为了解决这个问题, 阅读全文

posted @ 2018-06-10 15:52 SuperSnowYao 阅读(164) 评论(0) 推荐(0) 编辑

【8】桥接者模式
摘要:一、引言 这里以电视遥控器的一个例子来引出桥接模式解决的问题。首先,我们每个牌子的电视机都有一个遥控器,此时我们能想到的一个设计是——把遥控器做为一个抽象类,抽象类中提供遥控器的所有实现,其他具体电视品牌的遥控器都继承这个抽象类,具体设计类图如下: 这样的实现使得每部不同型号的电视都有自己遥控器实现 阅读全文

posted @ 2018-06-10 14:34 SuperSnowYao 阅读(300) 评论(0) 推荐(0) 编辑

【7】适配器模式
摘要:一、引言 在实际的开发过程中,由于应用环境的变化(例如使用语言的变化),我们需要的实现在新的环境中没有现存对象可以满足,但是其他环境却存在这样现存的对象。那么如果将“将现存的对象”在新的环境中进行调用呢?解决这个问题的办法就是我们本文要介绍的适配器模式——使得新环境中不需要去重复实现已经存在了的实现 阅读全文

posted @ 2018-06-10 11:35 SuperSnowYao 阅读(159) 评论(0) 推荐(0) 编辑

【6】原型模式
摘要:一、引言 在软件系统中,当创建一个类的实例的过程很昂贵或很复杂,并且我们需要创建多个这样类的实例时,如果我们用new操作符去创建这样的类实例,这未免会增加创建类的复杂度和耗费更多的内存空间。因为这样在内存中分配了多个一样的类实例对象,然后如果采用工厂模式来创建这样的系统的话,随着产品类的不断增加,导 阅读全文

posted @ 2018-06-09 17:12 SuperSnowYao 阅读(217) 评论(0) 推荐(0) 编辑

导航

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示