设计模式
梨粥
这个作者很懒,什么都没留下…
展开
-
单例模式
顾名思义,单例模式即应用了此模式的类最多只能实例化出一个对象,此外该类还应该自己管理这个对象,并提供可供外部访问的接口。应用了单例模式的的类的结构一般应该包括:要实例化的对象,构造函数以及 getInstance() 函数。其中,要实例化的对象应为私有的静态实例,构造函数也应为私有的构造方法,getInstance() 函数为共有的静态方法,用来判断该类是否已经被实例化,没有则调用构造函数实...原创 2019-03-05 01:05:49 · 144 阅读 · 0 评论 -
状态模式
1. 什么是状态模式当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。2. 状态模式要解决什么问题当控制一个对象状态转换的条件表达式过于复杂时,可以把状态的逻辑判断转移到一系列类中,将复杂的逻辑简单化。3. 状态模式的代码结构图using System;using System.Collections.Generic;using System.T...原创 2019-07-19 07:31:06 · 167 阅读 · 0 评论 -
抽象工厂模式
1. 什么是抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。使用多数据库的代码如下(抽象工厂模式实现)using System;using System.Collections.Generic;using System.Text;namespace 抽象工厂模式{ class Program { static ...原创 2019-07-16 11:21:05 · 116 阅读 · 0 评论 -
观察者模式 -- 发布-订阅模式
1. 什么是观察者模式观察者模式定义了一种一对多的关系,让多个观察者对象同时监听某一主题对象。这个对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。2, 观察者模式的结构图using System;using System.Collections.Generic;using System.Text;namespace 观察者模式{ class ...原创 2019-07-17 16:48:41 · 124 阅读 · 0 评论 -
建造者模式
1. 什么是建造者模式将一个复杂对象的构建与它的表示相分离,使得同样的构建过程可以创建不同的表示。2. 建造者模式的结构图3. 使用建造者模式的优势使得建造代码与表示代码分离,由于建造者隐藏了该产品是如何组装的,所以若需要改变一个产品的内部表示,只需要再定义一个具体的建造者就可以。4. 建造者模式的使用场合用于创建一些复杂的对象,这些对象内部构件间的建造顺序通常是稳定的...原创 2019-07-10 10:18:28 · 91 阅读 · 0 评论 -
外观模式 -- 门面模式
1. 什么是外观模式为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。2. 外观模式的结构图3. 外观模式的优势增加外观Facade可以提供一个简单的接口,减少不同子系统之间的依赖,降低耦合度。4. 使用时间当维护一个遗留的大型系统时,可能这个系统已经非常难以维护和扩展了,可以为新系统开发一个外观Facade类,来提供...原创 2019-07-10 09:42:04 · 115 阅读 · 0 评论 -
迪米特法则 -- 最少知识原则
1. 什么是迪米特法则如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某个方法的话,可以通过第三者转发这个调用。也就是说,在类的程序结构设计上,应当尽量降低成员的访问权限,即强调类之间的松耦合。2. 优点迪米特法则强调类之间的松耦合,类之间的耦合越弱,越有利于复用,一个处在弱耦合的类被篡改,不会对类的关系造成波及。...原创 2019-07-08 11:58:37 · 133 阅读 · 0 评论 -
模板方法模式
1. 什么是模板方法模式定义一个操作中算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的一些特定步骤。其实就是当一个类的实例中有很多重复的部分存在时,可以将这些重复的部分提取到父类,仅给子类留下不同的部分来设置。如下方考卷类,仅留下answer 部分由子类负责,其余全部由父类负责。using System;using System....原创 2019-07-08 11:46:56 · 110 阅读 · 0 评论 -
原型模式
1. 什么是原型模式用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。2. 原型模式结构图3. 原型模式的优点克隆不需要重复初始化新的对象,而是动态的获取对象运行时的状态,这样既隐藏了对象创建的细节,又对性能大大进行了提高。4. copy 与 clone假如存在数据集DataSet,那么它的clone 方法一般用于复制dataSet的结构,但不复制dataS...原创 2019-07-08 11:01:24 · 116 阅读 · 0 评论 -
装饰模式
装饰模式用于动态地给一个对象添加一些额外的职责,它可以理解为继承的替代方案。就增加功能来说,装饰模式比生成子类更加灵活。比如一家奶茶店,店里的奶茶可以加各种配料,这时应该怎么实现呢?一种方案是先构造一个奶茶抽象类,然后生成各种子类如珍珠奶茶、红豆奶茶、椰果奶茶 ...... ,但事实上一杯奶茶奶茶里可以添加多种配料,比如珍珠野果奶茶,如果店里的配料很多,排列组合之后要生成的子类就更多了,所...原创 2019-03-11 23:36:53 · 87 阅读 · 0 评论 -
简单工厂模式与策略模式
简单工厂模式设置专门的一个类来负责实例化其他的实例,这就是工厂。使用简单工厂模式,客户端只需要与工厂(factory类)与抽象类接触,降低了耦合度。简单工厂模式可以分为三部分:抽象类,具体实现类与factory。其中抽象类是factory的一个成员变量,factory根据一定的条件实例化其子类。策略模式策略模式用来管理一组算法类。如果面对一个问题需要在不同情况下采取不同的算法就可以...原创 2019-03-08 08:27:01 · 132 阅读 · 0 评论 -
开放-封闭原则
首先介绍软件设计中的几个原则单一职责原则单一职责模式是指一个类只实现一种功能(仅有一个引起它变化的原因)。如果该类承担的职责过多,相当于将这些功能耦合在一起。那么只要其中一个功能出现错误,就可能会影响其他部分的正常工作。这种耦合会导致脆弱的设计,当发生变化时设计会导致意想不到的破坏。所以只要我们发现一个类的功能不止一个时,就可以将它们拆分以不同的类来实现。事实上软件设计中的许多...原创 2019-03-10 14:24:06 · 142 阅读 · 0 评论 -
工厂方法模式
简单工厂模式设置专门的一个类来负责实例化其他的实例,这就是工厂。使用简单工厂模式,客户端只需要与工厂(factory类)与抽象类接触,降低了耦合度。简单工厂模式可以分为三部分:抽象类,具体实现类与factory。其中抽象类是factory的一个成员变量,factory根据一定的条件实例化其子类。简单工厂模式最大的优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类。对...原创 2019-03-14 16:06:15 · 350 阅读 · 0 评论 -
代理模式
代理模式是为其他对象提供一种代理以控制对这个对象的访问,代理对象可以在实际对象与客户端中间起到中介的作用。组成:抽象角色:通过接口或抽象类声明真实角色实现的业务方法。代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作。真实角色:实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用。作用:真实角色只需要关心自己...原创 2019-03-14 15:39:18 · 76 阅读 · 0 评论 -
适配器模式
1. 定义将一个类的接口转换成客户希望的另外一个接口。Adapter、模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。2. 主要解决的问题当系统的数据和行为都正确,但接口不符时,我们应该考虑用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况,比如在需要对早期代码复用一些功能等应用上很有...原创 2019-07-19 07:30:56 · 124 阅读 · 0 评论