随笔分类 - 设计模式学习
摘要:一,C#设计模式:解释器模式(Interpreter Pattern) 1,解释器模式的应用场合是Interpreter模式应用中的难点,只有满足“业务规则频繁变化,且类似的模式不断重复出现,并且容易抽象为语法规则的问题”才适合使用解释器模式2,解释器设计模式每个解释的类有自己的规则,并且与其他业务
阅读全文
摘要:一,C#设计模式:备忘录模式(Memento Pattern) 1、发起人角色(Originator):记录当前时刻的内部状态,负责创建和恢复备忘录数据。负责创建一个备忘录Memento,用以记录当前时刻自身的内部状态,并可使用备忘录恢复内部状态。Originator【发起人】可以根据需要决定Mem
阅读全文
摘要:一,访问者模式是用来封装一些施加于某种数据结构之上的操作。它使得可以在不改变元素本身的前提下增加作用于这些元素的新操作,访问者模式的目的是把操作从数据结构中分离出来。 二,代码 三,以上代码完成了结构之上的操作,并且完成数据的自定义方式的扩展
阅读全文
摘要:一,什么是职责链模式(Chain of Responsibility) 职责链模式是一种行为模式,为解除请求的发送者和接收者之间的耦合,而使多个对象都有机会处理这个请求。将这些对象连接成一条链,并沿着这条链传递该请求,直到有一个对象处理它。 二,如下代码
阅读全文
摘要:一,什么是中介者模式(Mediator Pattern)? 中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。比如:如果我们实现两个人的交互,难道我们要定义两个对象如ChineseA,ChineseB和ChineseC,然后他们都一起说话聊天,我们要他们之间的交互
阅读全文
摘要:一,什么是迭代器模式(Iterator Pattern) 提供一种方法顺序访问一个容器对象中的各个元素,而又不需要暴露该对象的内部表示 二,看下面例子:
阅读全文
摘要:一,什么是命令模式(Command Pattern)? 命令模式:将请求封装成命令对象,请求的具体执行由命令接收者执行; 二,如下代码 三,根据命令模式我们分为下面几个角色, 抽象命令 :Command 抽象接收者:Receiver 命令接收者:执行命令(JanReceiver,UsaReceive
阅读全文
摘要:一,什么是C#设计模式? 代理模式(Proxy Pattern):为其他对象提供一种代理以控制对这个对象的访问 二,代码如下: 三,如上很简单的代码,本来中国人去买菜,但这时是由代理帮忙买菜了, 代理模式由三部分组成: 抽象角色:通过接口或抽象类声明真实角色实现的业务方法。(如上:Event接口)
阅读全文
摘要:一,什么是享元模式? 享元模式(Flyweight Pattern):采用共享技术来避免大量拥有相同内容对象的开销,主要用于减少创建对象的数量,以减少内存占用和提高性能 1,根本的思路就是对象的重用2,根本的实现逻辑就是简单工厂+静态缓存 二,如下代码 FlyweightFactory 在多并发时的
阅读全文
摘要:一,什么是外观模式? 外观模式:为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用。 二,我们看看代码的实现 三,在上面代码中,我们的代码结构是:客户端--》Facade--》n个子系统(People和Event等) 1》在外观模式中我们,完全将子系统的实例
阅读全文
摘要:一,C#设计模式:组合模式(Composite Pattern) 二,我们看看输出结果: 1》在上述代码中我们添加了三个容器如开始,地球人和地球人,这样我们就有四层结构的树形集合,当我们要执行这么复杂的结构,我们只需要添加一个people容器,这个容器中有节点,而此时节点可以无限添加,若我们需要多层
阅读全文
摘要:一,装饰者模式(Decorator Pattern):装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。 二,在以上代码中我们是中国人是根本行为,我们给中国人装饰我会说英语,我会说日语和我会说英语我会说日语这三种行为,那按正常的理解来说,这是多态,那我们对People中的
阅读全文
摘要:一,桥接模式,直接上代码 二,总结: 1,桥梁模式的用意是"将抽象化与实现化脱耦,使得二者存在两个独立变化的维度(如上代码的人和人的事件) 2,当我们看到将抽象化与实现化脱耦,就会想到依赖注入,不错,这里就是使用依赖注入的构造注入的思想,将抽象和现实解耦,也就是指将抽象化和实现化之间的耦合解脱开,或
阅读全文
摘要:一,原型模式:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。(包含深度克隆和浅克隆) 主要面对的问题是:“某些结构复杂的对象”的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是他们却拥有比较稳定一致的接口。 先上代码, Peopl
阅读全文
摘要:一,建造者模式(Builder Pattern) 二,根据上面代码,我们会感觉和抽象工厂很像,他们两个是什么呢? 1》建造者模式将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一种复杂对象创建型模式。 2》抽象工厂则是针对系列对象,建造者模式是一种复杂对象 三,
阅读全文
摘要:一,工厂模式 二,主要用于隔离类对象的使用者和具体类型之间的耦合关系和实现多态等 与抽象工厂模式的区别在抽象工厂模式中详解 三,有时候我们有种疑惑,为什么我们不使用工厂模式,而使用现在的IOC呢? 其实本质上还是因为IOC是通过反射机制来实现的。当我们的需求出现变动时,工厂模式会需要进行相应的变化。
阅读全文
摘要:一,抽象工厂模式 二,抽象工厂和工厂模式的区别: 1,是针对的多个产品(对象)等级结构,而工厂模式是针对单个产品(对象)结构,而这些产品(对象)之间有相互依赖、或作用的关系 三,那这里的多个产品(对象)和产品(对象)之间相互依赖关系怎么理解呢? 1》产品(对象)理解:比如以上的代码例子,我们存在人,
阅读全文
摘要:一,什么是策略模式? 1,针对同一命令或行为,不同的策略做不同的动作。 2,比如针对一组算法,将每个算法封装到具有公共接口的独立的类中,从而使它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。 二,如下代码
阅读全文
摘要:23种设计模式: 创建型: C#设计模式:单例模式(Singleton) C#设计模式:工厂方法模式(Factory Method) C#设计模式:抽象工厂模式(Abstract Factory) C#设计模式:建造者模式(Builder Pattern) C#设计模式:原型模式(Prototype
阅读全文
摘要:一,什么是状态设计模式? 1,定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 2,当一个对象的内部状态改变时允许改变其行为,这个对象看起来像是改变了其类 二,如下代码: 使用场景: State模式在实际使用中比较多,适合"状态的切换".因为我
阅读全文

浙公网安备 33010602011771号