
【设计模式】
设计模式学习点滴
重庆李四
追求卓越,过完一生
展开
-
Java内置的观察者模式的使用
Java已经内置了观察者模式的观察者模式,我们可以直接拿来用,并不需要我们在重写了。Java API 有可观察者接口也就是主题接口 和 观察者接口,分别是1、java.util.Observable 可观察的 也就是 主题, 是一个抽象类。下面是它的API,源码也很容易看懂。2、java.util.Observer 观察者接口使用也很简单,注意的是在 通知观察者原创 2017-06-11 17:37:40 · 688 阅读 · 0 评论 -
设计模式:策略模式(C++)【诸葛亮的锦囊妙计】
序言今天带领大家一起来学习下策略模式,看到策略二字,就让笔者想到了谋略,想到了三国,那个谋士如云、英雄辈出的年代。遥想公瑾当年,小乔初嫁了,雄姿英发。咳咳,扯回来。我们所说的策略 ,从字面意思就是一个好的办法,对应我们编程来说就是一个好的方法 而且这个方法得站在一个高度,从编程的整体的角度要做到解耦合可扩展,我想用什么策略就用什么策略 ,下次我又想到了好策略还不会更改现有的代码!这就是策略模式。没...原创 2018-03-04 23:55:48 · 703 阅读 · 0 评论 -
设计模式:原型模式(C++)【克隆羊多莉】
原型模式介绍这节我们继续学习设计模式——原型模式。我们先看看原型模式的标准说法,用原型实例指定创建对象的种类并且通过拷贝这些原型创建新的对象。其实原型模式就是从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节而已。我们先看看C++和其他一些面向对象的编程语言的区别。在java、C# 或者一些其他的面向对象编程语言,他们所有的类都是都会继承或者间接继承Object类。比如说java中...原创 2018-03-12 00:12:22 · 1570 阅读 · 2 评论 -
设计模式:抽象工厂模式(C++)【工厂方法升级】
抽象工厂模式介绍在上一集的设计模式:工厂方法模式(C++)我们使用工厂方法模式能带来一系列的好处,我们将生成产品的工厂类进行了抽象化,一种产品 用专门的工厂进行生产。我们也知道 当产品种类特别多的时候 我们的工厂类会变的非常的多 ,产品有多少种,那么我们生成对应产品的工厂列就有多少种!难度没有更好一点的办法么?当然有嘛,有更好的设计模式来解决这个问题嘛。试想一下 一个工厂难道就只能生成一种产品?当...原创 2018-03-02 17:04:40 · 455 阅读 · 0 评论 -
设计模式:模板方法模式(C++)【喝咖啡还是喝茶】
模板方法模式介绍我们在软件设计中经常会有一些步骤是一样的,只是实现不一样,这种情况我们就可以使用模板方法模式。何为模板,就是有固定的步骤,可以复用嘛。来看看模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些步骤。举个简单例子,拿我们泡茶和泡咖啡来说,都有 煮水、酝酿、冲泡咖啡、添加调料等 ,都是由固定步骤,但是他们的实现...原创 2018-03-09 23:28:41 · 912 阅读 · 0 评论 -
设计模式:工厂方法模式(C++)【简单工厂进行升级】
工厂方法模式介绍我们接上一集设计模式:简单工厂模式(C++),在简单工厂模式中,知道它的优点可以将我们从自己生产产品中解放出来,它的缺点:1、 必须提供一个产品类型 给工厂 然后工厂给我们生产产品这就意味着客户必须知道工厂能够提供哪些产品 ,才能向工厂要相应的产品!2、每次添加新的产品类型,我们都要去更改简单工厂的代码,这样代码就很耦合了,不利于维护。那么有没有一种更好的方法,既能保存原来的优点,...原创 2018-03-02 13:39:18 · 502 阅读 · 0 评论 -
设计模式:简单工厂模式(C++)【看不懂算我输】
简单工厂模式介绍简单工厂模式并不是Gof四人帮搞的23中设计模式中的一种,只不过大部分的设计模式书籍都会介绍它。所有我们还是来看看它,或许你觉得很简单。但是我们可以瞧瞧它有什么优点和缺点。如何进行改进?进行一些发散性的思考。简单工厂模式由来工厂是什么?大多人都应该知道吧,就是生产批量的产品。我们知道对象,编程语言中的对象,都是我们new 出来的,我们每调用一次构造器才会生成一个对象。就相当于产品,...原创 2018-03-02 10:50:52 · 502 阅读 · 0 评论 -
设计模式:代理模式(C++)【代理服务器案例】
代理模式介绍今天继续学习设计模式,今天我们来学习代理模式。其实这个模式呢在我们的生活早已经运用起来了。笔者看到这个模式就联想到了代理商。我们客户买东西一般都是经过代理商的,代理商和真正的生成产品的公司进行对接,因为代理商有钱嘛可以搞垄断赚差价嘛。其实在软件设计中的代理模式和我们现实生活中很类似。在设计模式中,我们的代理模式是这样的,客户端并不能直接访问真正的主题对象,只能通过代理对象进行间接的访问...原创 2018-03-07 22:51:06 · 1935 阅读 · 1 评论 -
设计模式:装饰模式(C++)【小明习武闯天下】
序言这集带来大家一起学下装饰模式。装饰模式 看名字就能 猜到是干啥 就是用来 搞装修进行装饰的 嘛!没毛病,其实装饰模式 确实是用来装饰对象的 而且是为了解耦的。我们知道 类是生成对象的模板,我们如果要做得单一职责的话,那么每增加一个不一样的属性,都要添加一个新的子类,这样就会有很多种类。或许这些属性可能还不是通用的。那么怎样来解决呢?或许我们可以将那些要添加的属性或者动作 封装成 装饰器,你要...原创 2018-03-06 23:43:51 · 439 阅读 · 0 评论 -
Java实现单例模式之饿汉式、懒汉式、枚举式,带测试。
Java实现单例的3种普遍的模式,饿汉式、懒汉式、枚举式。原创 2016-10-23 23:54:19 · 5661 阅读 · 11 评论 -
C++单例模式:单例模式遇到多线程
单例模式介绍单例模式主要有2中形式,一种是饿汉式,一种是懒汉式。饿汉式:程序一加载单例模式就已经创建了,也就很饥饿嘛。因为是静态属性进行单例初始化,所以优点是线程是安全的,缺点是无论用户是否使用单例对象都会创建单例对象。懒汉式:当用户使用单例对象时,才去创建单例对象,所以很懒惰嘛。优点是用户不使用就不会创建对象,缺点是当遇到多线程是,是线程不安全的,但是我们可以使用加强版的也就是线原创 2018-02-09 21:10:39 · 10021 阅读 · 2 评论 -
C语言版:装饰器模式
C语言装饰器模式实现C语言是面向过程的一门语言,更注重过程,是一个一个函数进行一个一个去执行 是这么一个过程,那么我们怎样来实现用C语言来实现类似装饰器模式的效果呢?每个函数是一个单独的过程,这个函数编写之后,我们可以为这个函数添加新的功能或者逻辑而不改动原函数,这就实现了类似装饰器的效果了。C语言中指针很强大,任何定义的函数都可以用函数指针指向函数。所以可用通函数指针将函数传到另一个函数中。C语原创 2018-01-18 18:54:28 · 3384 阅读 · 3 评论 -
python版:装饰器模式
装饰器模式介绍装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。装饰器模式实现设计模式只是一种思想与语言无关,设计模式可以通过多种语言方式去实现它。今天我们来使用python中函数的闭包形式来类似实现装饰器模式。下面我们在不改变原函数定的情况下,给原函数添加新的功能。我们在不改动原函数的情况下,给原函数添加日志功能。原创 2018-01-18 13:46:19 · 877 阅读 · 0 评论 -
Java设计模式之观察者模式
何为观察者模式?观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象状态改变时,它的所有依赖者都会收到通知并自动更新。这个定义太正式化了,通俗的说,就是一个主题对象 管理者某些数据,当主题内数据改变,就会通知观察者。我们的观察者已经注册了主题 以便在主题数据更改时能得到更新做某些动作。主题至少有3个接口,注册观察者、移除观察者、主题对象状态改变时通知观察者 的接口。观察者至少有1个接原创 2017-06-11 15:59:13 · 340 阅读 · 0 评论 -
设计模式:外观模式(C++)【颜值很重要】
外观模式介绍外观 外观 从名字都可以看出来对 颜值很看重呗。21世纪都是刷脸的时代,当然颜值很重要。那么对于我们写的代码 也一样,也需要好看的颜值,记得有本书叫 《代码整洁之道》 说的就是相关的内容。在我们的设计模式中呀,我们给用户呈现的应该是一个简单且统一的接口,我们不需要把接口实现的细节让用户知道,当然用户也不想知道你是怎么实现 。这也就是我们设计模式中的最少知道原则,又被称为 迪米特法则。那...原创 2018-03-13 00:09:20 · 668 阅读 · 0 评论