随笔分类 -  设计模式

摘要:今天主要是学习了单例模式的三种实现,包括懒汉式、双重检查锁懒汉式和饿汉式。 首先,我们应该要理解单例模式的概念,单例模式简单的来说就是一个类只允许有一个对象,为此,我们可以知道必须要控制类的构造行为,故将构造函数私有化、同时将该类的对象 定义为该类的静态数据成员(因为构造函数被私有化了)。 首先是懒 阅读全文
posted @ 2021-06-05 10:49 张杨 阅读(555) 评论(0) 推荐(0) 编辑
摘要:命令模式:将一个请求封装为一个对象,从而是你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。 命令模式有如下优点:1.它能较容易地设计一个命令队列;2.在需要的情况下,可以较容易地将命令记入日志;3.允许接收请求的一方决定是否要否决请求;4.可以容易地实现请求的撤销和 阅读全文
posted @ 2016-06-27 20:45 张杨 阅读(937) 评论(0) 推荐(0) 编辑
摘要:桥接模式:实现系统可能有多角度分类,每一种分类都有可能的变化,那么就把这种多角度分离出来让他们独立变化,减少它们之间的耦合 下面的实例是一个手机软件的实例,对于手机来说,我们可以从手机的品牌进行分类,也可以从软件角度分类(功能机),同时手机品牌与手机软件是一个 聚合的关系。 代码如下: 运行结果: 阅读全文
posted @ 2016-06-26 22:13 张杨 阅读(344) 评论(0) 推荐(0) 编辑
摘要:单例模式,保证一个类仅有一个实例,并提供一个访问它的全局访问点。 通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象。一个最好的办法是,让类自身负责保存它的唯一实例。这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法。 下面的代码是通过两个button按 阅读全文
posted @ 2016-06-25 23:39 张杨 阅读(343) 评论(0) 推荐(0) 编辑
摘要:说起迭代器,大家一定不陌生,经常使用的foreach in 这种循环就是,C#语言已经内置化了迭代器模式,主要是支持对非泛型集合的简单迭代接口IEumerator和公开枚举数IEnumerable。虽然内置了,但是这种模式也有我们学习的必要性。 代码如下 运行结果: 阅读全文
posted @ 2016-06-15 22:56 张杨 阅读(409) 评论(0) 推荐(0) 编辑
摘要:当需求中是体现部分与整体层次的结构时,以及你希望忽略组合对象与单个对象的不同,统一的使用组合结构中的所有对象时,就应该考虑使用组合模式了。例如:我们单个复制一个文件和多个复制文件,对我们而言,并不在乎一个文件的复制与多个文件复制的区别,也就是我们的操作是一样的。 下面的代码是建立一个公司的组织结构, 阅读全文
posted @ 2016-06-14 22:25 张杨 阅读(356) 评论(0) 推荐(0) 编辑
摘要:适配器模式主要用于当我们写的代码与旧代码(可能不是我们写的)无法兼容时,做类型兼容,这样我们就可以轻松使用旧代码中的功能了,这个模式和装饰模式很像。 但二者还是有所区别的,装饰模式主要是为了为类添加装饰功能,将核心功能与装饰功能分开。适配器模式主要是为了新旧代码的兼容,万不得已才使用。 代码如下: 阅读全文
posted @ 2016-06-04 21:40 张杨 阅读(289) 评论(0) 推荐(0) 编辑
摘要:抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 最大的好处便是易于交换产品系列,由于具体工厂类,在一个应用中只需在初始化的时候出现一次,这就使得改变一个应用的具体工厂变得非常容易,它只需改变具体工厂即可使用不同的产品配置。 他使具体创建实例的过程与客户端分离,客户 阅读全文
posted @ 2016-06-02 22:02 张杨 阅读(395) 评论(0) 推荐(0) 编辑
摘要:观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主体对象。这个主体对象在状态发生变化时,会通知所有的观察者对象,使它们能够自动更新自己。 观察者模式所做的工作其实就是在解除耦合。让耦合的双方都依赖于抽象,而不是依赖于具体。从而使得各自的变化都不会影响到另一边的变化。 下面的代码利 阅读全文
posted @ 2016-05-23 22:22 张杨 阅读(304) 评论(0) 推荐(0) 编辑
摘要:建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。(转至《大话设计模式》)。 学习这个模式后,不知觉得和之前的简单工厂模式做了对比,发现二者都是创建对象。但二者还是有所区别的,简单工厂模式是更具不同的情况创建不同的对象, 而建造者模式则主要是用于创建一些复杂的对象 阅读全文
posted @ 2016-05-22 22:24 张杨 阅读(256) 评论(0) 推荐(0) 编辑
摘要:外观模式:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一个子系统更加容易使用。 外观模式在什么时候使用最好了? 首先,在设计初期阶段,应该要有意识的将不同的两个层分离。 其次,在开发阶段,子系统往往因为不断的重构演化而变得越来越复杂。 第三,在维护一个遗留的大型系 阅读全文
posted @ 2016-05-17 21:53 张杨 阅读(234) 评论(0) 推荐(0) 编辑
摘要:模板方法模式,定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。 模板方法模式是通过把不变行为搬到超类,去除子类中的重复代码来体现它的优势。 当不变和可变的行为在方法的子类实现中混合在一起的时候,不变的行为就会在子类中重复 阅读全文
posted @ 2016-05-17 21:24 张杨 阅读(247) 评论(0) 推荐(0) 编辑
摘要:原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节。 .NET在System命名空间中提供了ICloneable接口,其中就是唯一的一个方法Clone(),这样你就只需要实现这个接口就可以完成原型模式。(选至《大话设计模式》) MemberwiseClone()方法, 阅读全文
posted @ 2016-05-17 20:54 张杨 阅读(301) 评论(0) 推荐(0) 编辑
摘要:今天继续看了代理模式,总结一下,觉得这个代理类主要是通过一个借口抽象了一些代理类和被代理类公用的方法。然后让被代理类实现这些方法。 再让被代理类通过代理类中来调用这些方法。 代码如下:PersonA表示真正追求美女的人,PersonB则是PersonA与美女的传话人,就是代理类。 输出结果: 阅读全文
posted @ 2016-05-12 21:58 张杨 阅读(286) 评论(0) 推荐(0) 编辑
摘要:今天看了策略模式,不知觉的和前天学的简单工厂模式做了对比,也百度了一些博客,最后的出一个结论,简单工厂模式主要负责初始化各种对象,而策略模式则是更多的对方法进行封装。同一个例子,如果使用简单工厂模式,则是根据需求返回不同的对象,而使用策略模式的话,就是根据需求来返回不同的方法。 下面的例子分别使用简 阅读全文
posted @ 2016-05-07 11:17 张杨 阅读(1061) 评论(0) 推荐(0) 编辑
摘要:转载至http://www.cnblogs.com/me115/p/3790615.html 工厂模式和策略模式看着很像,经常让人混淆不清; 它们的区别在哪里,需要细细体味; 相似点 在模式结构上,两者很相似; 差异 用途不一样 工厂是创建型模式,它的作用就是创建对象; 策略是行为型模式,它的作用是 阅读全文
posted @ 2016-05-07 09:30 张杨 阅读(1475) 评论(2) 推荐(0) 编辑
摘要:主要利用工厂模式来实现了一个计算器,将加减乘除操作分离了开来,实现了低耦合的目标。 阅读全文
posted @ 2016-05-05 15:31 张杨 阅读(991) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示