设计模式
JsonZhang_ZY
听着,路飞,胜利与失败都要品尝,经历了四处逃窜的辛酸,痛苦伤心的回忆,才能真正成为独当一面的男子汉,就算痛哭流涕也没关系,一定要闯过这一关!
展开
-
设计模式之代理模式
今天继续看了代理模式,总结一下,觉得这个代理类主要是通过一个借口抽象了一些代理类和被代理类公用的方法。然后让被代理类实现这些方法。再让被代理类通过代理类中来调用这些方法。代码如下:PersonA表示真正追求美女的人,PersonB则是PersonA与美女的传话人,就是代理类。using System;using System.Collections.Generic;原创 2016-05-12 21:59:15 · 265 阅读 · 0 评论 -
设计模式之组合模式
当需求中是体现部分与整体层次的结构时,以及你希望忽略组合对象与单个对象的不同,统一的使用组合结构中的所有对象时,就应该考虑使用组合模式了。例如:我们单个复制一个文件和多个复制文件,对我们而言,并不在乎一个文件的复制与多个文件复制的区别,也就是我们的操作是一样的。下面的代码是建立一个公司的组织结构,其中各个部分,不管是分公司还是部门,都拥有一套相同的功能操作。代码如下:原创 2016-06-14 22:40:41 · 208 阅读 · 0 评论 -
设计模式之观察者模式
观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主体对象。这个主体对象在状态发生变化时,会通知所有的观察者对象,使它们能够自动更新自己。 观察者模式所做的工作其实就是在解除耦合。让耦合的双方都依赖于抽象,而不是依赖于具体。从而使得各自的变化都不会影响到另一边的变化。下面的代码利用了委托。我对委托的定义就是函数指针。 using System原创 2016-05-23 22:23:28 · 247 阅读 · 0 评论 -
设计模式之适配器模式
适配器模式主要用于当我们写的代码与旧代码(可能不是我们写的)无法兼容时,做类型兼容,这样我们就可以轻松使用旧代码中的功能了,这个模式和装饰模式很像。但二者还是有所区别的,装饰模式主要是为了为类添加装饰功能,将核心功能与装饰功能分开。适配器模式主要是为了新旧代码的兼容,万不得已才使用。代码如下:using System;using System.Collections.原创 2016-06-04 21:42:32 · 238 阅读 · 0 评论 -
设计模式之建造者模式
建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。(转至《大话设计模式》)。 学习这个模式后,不知觉得和之前的简单工厂模式做了对比,发现二者都是创建对象。但二者还是有所区别的,简单工厂模式是更具不同的情况创建不同的对象,而建造者模式则主要是用于创建一些复杂的对象,这些对象内部构建间的建造顺序通常是稳定的,但对象内部的构建通常面临复杂的变原创 2016-05-22 22:25:38 · 232 阅读 · 0 评论 -
设计模式之抽象工厂模式
设计模式之抽象工厂模式 抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。最大的好处便是易于交换产品系列,由于具体工厂类,在一个应用中只需在初始化的时候出现一次,这就使得改变一个应用的具体工厂变得非常容易,它只需改变具体工厂即可使用不同的产品配置。 他使具体创建实例的过程与客户端分离,客户端是通过它们的抽象接口操纵实例,产品的具体类名原创 2016-06-02 22:03:59 · 329 阅读 · 0 评论 -
设计模式之策略模式(包含与简单工厂模式的区别,实现了超市结账系统)
今天看了策略模式,不知觉的和前天学的简单工厂模式做了对比,也百度了一些博客,最后的出一个结论,简单工厂模式主要负责初始化各种对象,而策略模式则是更多的对方法进行封装。同一个例子,如果使用简单工厂模式,则是根据需求返回不同的对象,而使用策略模式的话,就是根据需求来返回不同的方法。下面的例子分别使用简单工厂模式和策略模式和写的超市结账系统,二者功能实现上没有区别。using Sys原创 2016-05-07 11:19:09 · 1110 阅读 · 0 评论 -
策略模式与简单工厂模式的区别
转载至http://www.cnblogs.com/me115/p/3790615.html工厂模式和策略模式看着很像,经常让人混淆不清; 它们的区别在哪里,需要细细体味; 相似点 在模式结构上,两者很相似; 差异 用途不一样 工厂是创建型模式,它的作用就是创建对象; 策略是行为型模式,它的作用是让一个对象转载 2016-05-07 10:28:51 · 554 阅读 · 0 评论 -
设计模式之外观模式
外观模式:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一个子系统更加容易使用。外观模式在什么时候使用最好了?首先,在设计初期阶段,应该要有意识的将不同的两个层分离。其次,在开发阶段,子系统往往因为不断的重构演化而变得越来越复杂。第三,在维护一个遗留的大型系统时,可能这个系统已经非常难以维护和扩展了,此时,我们可以开发一个外观类,来原创 2016-05-17 21:54:26 · 263 阅读 · 0 评论 -
设计模式之模板设计模式
模板方法模式,定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。模板方法模式是通过把不变行为搬到超类,去除子类中的重复代码来体现它的优势。当不变和可变的行为在方法的子类实现中混合在一起的时候,不变的行为就会在子类中重复出现。我们通过模板方法模式把这些行为搬到单一的地方,这样就帮助子类摆脱重复的不变行为的纠原创 2016-05-17 21:25:10 · 228 阅读 · 0 评论 -
设计模式之原型模式
原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节。.NET在System命名空间中提供了ICloneable接口,其中就是唯一的一个方法Clone(),这样你就只需要实现这个接口就可以完成原型模式。(选至《大话设计模式》)MemberwiseClone()方法,如果字段是值类型的,则对该字段执行逐位复制,如果是应用类型,则复制引用但不复制引用对象;原创 2016-05-17 20:57:03 · 277 阅读 · 0 评论 -
设计模式之简单工厂模式
主要利用工厂模式来实现了一个计算器,将加减乘除操作分离了开来,实现了低耦合的目标。using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 设计模式___计算器{ public原创 2016-05-05 22:00:51 · 245 阅读 · 0 评论 -
自己动手写计算器V1.0
今天突发奇想,想着看了还几个设计模式了,倒不如写点东西来实践它们。发现计算器这种就比较合适,打算随着设计模式的学习,会对计算器不断的做改进。包括功能的增加和算法的改进。初学者难免犯错,希望大家不吝指教。 计算器V1.0:主要实现了计算器最常见的加减乘除功能,同时还有一个特殊功能,例如:我们执行完1+2后,如果点击等号,会执行加法运算输出结果。但我们如果点击的是运算符(如-),原创 2016-05-13 23:45:04 · 362 阅读 · 0 评论 -
自己动手写计算器V1.1
这个改动主要是使用工厂模式替代了简单工厂模式,这样做的好处是如果以后我们要扩充其他运算时,就不用总是去修改工厂类,这是可以采取工厂模式,主要是将原来简单工厂类的逻辑判断分离出来,将它作为一个借口,与此同时,我们新建运算符工厂类,继承这些借口,重写里面的getResult()方法,获取对应的运算对象。这样做的好处在于,满足了“少修改,多扩充”的原则。缺点是:要将逻辑代码写在客户端,这样很原创 2016-05-14 11:33:02 · 339 阅读 · 0 评论 -
设计模式之迭代器模式
说起迭代器,大家一定不陌生,经常使用的foreach in 这种循环就是,C#语言已经内置化了迭代器模式,主要是支持对非泛型集合的简单迭代接口IEumerator和公开枚举数IEnumerable。虽然内置了,但是这种模式也有我们学习的必要性。代码如下using System;using System.Collections.Generic;using System.Lin原创 2016-06-15 22:57:00 · 304 阅读 · 0 评论