HeadFirst设计模式
hqing159
NULL
展开
-
设计模式简介
写在前面的话 ~~~~将以《Head First 设计模式》为基础进行设计模式的学习。这里将在阅读完之后做一个设计模式的简介。原创 2017-07-11 23:26:54 · 187 阅读 · 0 评论 -
状态模式(State Pattern)——事物状态
前言 前阵子被大师带着写界面,还装逼学了一下react(这里是我的react博客)。在传统的开发中,通常 UI 上诸多状态变化会让维护应用的状态变得很困难和复杂。React 通过检测状态变化来每次重新渲染虚拟 DOM 节点,然后按需自动更新真实节点,这种方式可以让开发人员可以简单地专注在应用的状态上。 在react中,数据控制UI,数据变化其实可以看做变量状态的改变。这就引出了我们今天要原创 2017-10-23 00:19:28 · 367 阅读 · 0 评论 -
组合模式(Composite Pattern)——管理良好的集合
前言 最近由windows转到了Linux,但是似乎对Linux一无所知,只知道是装逼神器。但是慢慢滴,Linux的文件系统假装让我产生了兴趣(实际上是巧遇)。下面让我们来看看Linux文件系统的一段介绍。 Linux 系统中的一切都是存放在唯一的 虚拟文件系统中的,这个 虚拟文件系统是树状的结构以一个根目录开始。启动系统后,先有这个 虚拟文件系统,再识别出各个硬盘, 再把某个硬盘的某个原创 2017-10-22 17:36:13 · 382 阅读 · 0 评论 -
状态模式(State Pattern)——事物的状态
周一前补上原创 2017-10-22 00:59:57 · 396 阅读 · 0 评论 -
组合模式(Composite Pattern)——管理良好的集合
前言 最近由windows转到了Linux,但是似乎对Linux一无所知,只知道是装逼神器。但是慢慢滴,Linux的文件系统假装让我产生了兴趣(实际上是巧遇)。下面让我们来看看Linux文件系统的一段介绍。 Linux 系统中的一切都是存放在唯一的 虚拟文件系统中的,这个 虚拟文件系统是树状的结构以一个根目录开始。启动系统后,先有这个 虚拟文件系统,再识别出各个硬盘, 再把某个硬盘的某个原创 2017-10-22 00:57:50 · 288 阅读 · 0 评论 -
代理模式(Proxy Pattern)——控制对象访问
前言背景:最近希望买一台最新的顶配Mac电脑 冲突:国内还没上,只有美国才有 解决方案:寻找代购进行购买 这就是我们的代理模式概述代理模式(Proxy Pattern)为另一个对象停工给一个替身或占位符以控制对这个对象的访问。它是一种对象结构型模式。当无法直接访问某个对象或访问某个对象存在困难时可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,所访问的真实对象与代理对象需要实现相同的原创 2017-10-29 11:56:20 · 751 阅读 · 0 评论 -
迭代器模式(Iterator Pattern)——管理良好的集合
前言 最近在大佬的带领下做标签系统。对于我这样 设计真是一个很困难的事情,最难的设计被大佬搞定了。其中在设计使用条件时,针对不同的场景插叙条件、使用规则都不相同,同时需要通过使用规则获取到满足前端需求的足量标签,也就是说,获取到的标签集合还需要遍历每一个标签是否在该场景下可用。大佬的设计就采用了迭代器模式。 于是,我在网上看到这样一个语句片段“迭代器模式(Iterator Pattern原创 2017-09-04 00:55:15 · 294 阅读 · 0 评论 -
模板方法模式(Template Method Pattern)——封装算法
前言 通常我们会遇到这样的一个问题:我们知道一个算法所需的关键步骤,并确定了这些步骤的执行顺序。但是某些步骤的具体实现是未知的,或者说某些步骤的实现与具体的环境相关。 模板方法模式把我们不知道具体实现的步骤封装成抽象方法,提供一个按正确顺序调用它们的具体方法(这些具体方法统称为“模板方法”),这样构成一个抽象基类。子类通过继承这个抽象基类去实现各个步骤的抽象方法,而工作流程却由父类控制原创 2017-09-03 21:33:33 · 285 阅读 · 0 评论 -
抽象工厂模式(Abstract Factory Pattern)
前言 在工厂方法模式中,我们使用一个工厂创建一个产品,也就是说一个具体的工厂对应一个具体的产品。但是有时候我们需要一个工厂能够提供多个产品对象,而不是单一的对象,这个时候我们就需要使用抽象工厂模式。一些概念 产品等级结构:也就是产品的继承结构。例如一个为电视的抽象类,它有长虹电视、乐视电视、康佳电视等一系列的子类,那么这个抽象类电视和他的子类就构成了一个产品等级结构。 产品族:是在原创 2017-07-31 00:29:14 · 859 阅读 · 0 评论 -
单例模式(Singleton Pattern)——独一无二的对象
前言概述定义注意类图设计模式的实现懒汉式线程不安全懒汉式线程安全饿汉式线程安全但是不是延迟加载双检锁双重校验锁DCL即double-checked locking线程安全登记式静态内部类线程安全枚举线程安全一脸懵逼的代码总结前言 有一些对象其实我们只需要一个,比如说,线程池、缓存、对话框、处理偏好设置和注册表的对象、日志对象,充当但印记、显卡等设备的驱动程序的对象,事实原创 2017-08-07 09:35:14 · 580 阅读 · 0 评论 -
外观模式(Facade Pattern)——随遇而安
前言 俗话说得好,随着人类的进步,社会的发展(土土的小学生用语),家庭影院已经进入普通家庭。那么如何构建一个集中管理的家庭影院软件系统呢?注意家庭影院需要做很多有趣的事情哦,比如内含DVD播放器,投影仪,自动屏幕,环绕立体声等。。。 当当当,外观模式闪亮登场(QAQ)。。。概述定义 外观模式(Facade Pattern)提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了原创 2017-08-20 23:43:13 · 256 阅读 · 0 评论 -
命令模式(Command Pattern)——把方法调用封装起来
前言 在某些场合,比如要对行为进行”记录、撤销/重做、事务”等处理,无法抵御变化的紧耦合是不合适的。在这种情况下,如何将”行为请求者”与”行为实现者”解耦?将一组行为抽象为对象,可以实现二者之间的松耦合。概述定义命令模式(Command Pattern)将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销操作。类图Command: 抽象命令类Conc原创 2017-08-13 23:53:02 · 325 阅读 · 0 评论 -
适配器模式(Adapter Pattern)——随遇而安
前言来看看某宝的爆款吧!什么十三合一的读卡器?是不是很厉害?!读卡器作为内存卡和笔记本之间的适配器。将内存卡插入读卡器,再讲读卡器插入笔记本,这样就可以通过笔记本读取内存卡。无论你是什么型号的内存卡,通过读卡器都能通过USB接口接入电脑。可以说读卡器就是一种适配器。概述定义 适配器模式(Adapter Pattern)讲一个类的接口。转化成客户期望的另外另一种接口。适配器让原本接口不兼容的类可原创 2017-08-20 17:15:11 · 400 阅读 · 0 评论 -
装饰者模式(Decorator Pattern)——给爱用继承的人一个全新的设计眼界
概述 ~~~~ 装饰者模式(Decorator Pattern),别名(Warpper)。 动态的将责任附加到对象上。若要扩展功能,装饰者提供比继承更有弹性的替代方案。 ~~~~装饰者模式从属的大类是结构型模式(该大类下的设计模式关注类和对象的组合。继承的概念被用来组合接口和定义组合对象获得新功能的方式)。 ~~~~涉及的设计原则: ~~~~1. 开放–关闭原则类(应该对扩展原创 2017-07-24 01:33:16 · 1695 阅读 · 0 评论 -
工厂方法模式(Factory Method Pattern)
前言介绍简单工厂定义简单工厂类图概述定义涉及的策略模式结构类图需要注意的东西适用场景设计模式的实现场景说明代码实现运行结果总结前言介绍简单工厂定义 又称之为静态工厂方法。在简单工厂中,可以根据传递的参数不同,返回不同类的实例。简单工厂定义了一个类,这个类专门用于创建其他类的实例,这些被创建的类都有一个共同的父类。简单工厂类图简单工厂类(SimpleFactory),原创 2017-07-31 00:05:40 · 428 阅读 · 0 评论 -
观察者模式(Observer Pattern)——让你的对象知悉现状
目录概述观察者模式类图需要注意的东西从主题推push和拉push数据应用场景场景说明类图设计代码实现总结概述 ~~~~ 观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会受到通知并自动更新。这里改变的对象被称为主题(Subject)(也叫可观察者),它的依赖者称为观察者(Observer)。观察者模式类图需要注意的东西 ~~~~观察原创 2017-07-12 01:13:10 · 997 阅读 · 0 评论 -
桥接模式(Bridge Pattern)——处理多维度变化
前言P: 嘿,小重楼!我们这边有个简单的需求,交个你了。me: 啥需求?我拒绝!!!P: 呀?你小子敢拒绝老娘的需求,活腻了吧?me: 好吧,我接。。。做啥呢?我接。。。P: 我这边需要开发一个视频播放器。不仅要跨平台(Linux,Mac,Windows等)还要支持播放多种格式的视频文件(MPEG,RMVB,AVI,WMI等)哦。me:这。。。这个要求有点太高了吧?还好现在开源项目多,可以解决技术问原创 2017-11-19 01:04:02 · 594 阅读 · 0 评论