- 博客(63)
- 资源 (4)
- 收藏
- 关注
原创 迭代器模式
迭代器模式迭代器模式概念角色和职责案例概念 Iterator模式也叫迭代模式,是行为模式之一,它把对容器中包含的内部对象的访问委让给外部类,使用Iterator(遍历)按顺序进行遍历访问的设计模式。 在应用Iterator模式之前,首先应该明白Iterator模式用来解决什么问题。或者说,如果不使用Iterator模式,会存在什么问题。由容器自己实现顺序遍历。直接在容器类里直接
2016-11-29 19:08:25 313
原创 解释器模式
解释器模式解释器模式概念角色及职责案例概念解释器模式是行为型模式之一,描述了如何为简单的语言定义一套语法,如何在该语言中表示一个句子,以及如何解释这些句子,然后执行相应的动作和行为!角色及职责Context 解释器上下文环境类。用来存储解释器的上下文环境,比如需要解释的文法等。AbstractExpression 解释器抽象类。ConcreteExpression 解释器具体实现类
2016-11-29 18:39:53 257
原创 状态模式
状态模式状态模式概念角色及职责案例概念 State模式也叫状态模式,是行为设计模式的一种。State模式允许通过改变对象的内部状态而改变对象的行为,这个对象表现得就好像修改了它的类一样。 状态模式主要解决的是:控制一个对象的状态进行转换的条件表达式,过于复杂时的情况(条件表达式控制着对象状态的转换)。把状态的判断逻辑转移到到表现不同状态的一系列类当中,可以把复杂的判断逻辑简化。角色及职责
2016-11-29 17:02:12 322
原创 访问者模式
访问者模式访问者模式概念角色和职责优缺点案例概念 Visitor模式也叫访问者模式,是行为模式之一,它分离对象的数据和行为,使用Visitor模式,可以不修改已有类的情况下,增加新的操作角色和职责。 访问者模式特点:访问者模式优点是增加新的操作很容易,因为增加新的操作就意味着增加一个新的访问者。访问者模式将有关的行为集中到一个访问者对象中。那访问者模式的缺点是是增加新的数据结构变
2016-11-29 16:08:48 339
原创 备忘录模式
备忘录模式备忘录模式概念角色及职责案例概念Memento模式也叫备忘录模式,是行为模式之一,它的作用是保存对象(原生对象)的内部状态到备忘录,并在需要的时候通过caretaker(保存了备忘录)提取备忘录的内容(undo/rollback)恢复原生对象以前的状态。角色及职责Originator(原生者) 需要被保存状态以便恢复的那个对象。Memento(备忘录) 该对象由Origina
2016-11-29 14:08:35 319
原创 观察者模式
观察者模式观察者模式概念角色及职责案例概念 Observer模式是行为模式之一,它的作用是当一个对象的状态发生变化时,能够自动通知其他关联对象,自动刷新对象状态。 Observer模式提供给关联对象一种同步通信的手段,使某个对象与依赖它的其他对象之间保持状态同步。角色及职责Subject(被观察者) 被观察的对象。当需要被观察的状态发生变化时,需要通知队列中所有观察者对象。Su
2016-11-29 11:12:20 347
原创 中介者模式
中介者模式中介者模式概念角色和职责模式优点案例概念 Mediator(中介者)模式是行为模式之一,在Mediator模式中,类之间的交互行为被统一放在Mediator的对象中,对象通过Mediator对象同其他对象交互,Mediator对象起着控制器的作用。 用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显示的相互引用,从而降低耦合;而且可以独立地改变它们之间的交互。角色
2016-11-29 10:34:01 273
原创 策略模式
策略模式策略模式概念角色和职责优缺点案例概念 Strategy模式也叫策略模式是行为模式之一,它对一系列的算法加以封装,为所有算法定义一个抽象的算法接口,并通过继承该抽象算法接口对所有的算法加以封装和实现,具体的算法选择交由客户端决定(策略)。Strategy模式主要用来平滑地处理算法的切换 。 在宏观上对算法进行替换!这一点与模板模式不一样!模板模式是在抽象模板类里面有一个模板函数
2016-11-29 09:31:40 304
原创 责任链模式
责任链模式责任链模式概念角色及职责优缺点案例概念 Chain of Responsibility(CoR)模式也叫职责链模式或者职责连锁模式,是行为模式之一,该模式构造一系列分别担当不同的职责的类的对象来共同完成一个任务,这些类的对象之间像链条一样紧密相连,所以被称作职责链模式。例1:比如客户Client要完成一个任务,这个任务包括a,b,c,d四个部分。 首先客户Client把任
2016-11-28 22:43:56 278
原创 命令模式
命令模式命令模式概念角色和职责案例概念 Command模式也叫命令模式 ,是行为型设计模式的一种。Command类封装了对目标对象的调用行为以及调用参数。 在面向对象的程序设计中,一个对象调用另一个对象,一般情况下的调用过程是:创建目标对象实例;设置调用参数;调用目标对象的方法。 但在有些情况下有必要使用一个专门的类对这种调用过程加以封装,我们把这种专门的类称作command类。
2016-11-28 21:46:03 273
原创 模板模式
模板模式模板模式概念角色和职责案例概念 Template Method模式也叫模板方法模式,是行为模式之一,它把具有特定步骤算法(模板方法)中的某些必要的处理委让给抽象方法(模板类父类中的纯虚函数),通过子类对抽象方法的不同实现,改变整个算法的行为。 也就是说,通过子类重写父类虚函数,在保证总体大局,总体步骤不变的情况下,每一个小步骤的具体算法行为可以改变,最终实现接口不变。角色和职责
2016-11-28 21:06:15 276
原创 享元模式
享元模式享元模式概念角色和职责案例概念Flyweight模式也叫享元模式,是构造型模式之一,它通过与其他类似对象共享数据来减小内存占用。说白了,就是共享内存,共享对象!角色和职责抽象享元角色: 所有具体享元类的父类,规定一些需要实现的公共接口。具体享元角色: 抽象享元角色的具体实现类,并实现了抽象享元角色规定的方法。享元工厂角色: 负责创建和管理享元角色。 使用场景: 是
2016-11-28 20:44:38 259
原创 外观模式
外观模式外观模式概念角色和职责案例概念Facade模式也叫外观模式,是由GoF提出的23种设计模式中的一种。Facade模式为一组具有类似功能的类群,比如类库,子系统等等,提供一个一致的简单的界面。这个一致的简单的界面被称作facade。角色和职责Façade 为调用方, 定义简单的调用接口。Clients(没有画出) 调用者。通过Facade接口调用提供某功能的内部类群。S
2016-11-28 20:04:49 259
原创 桥接模式
桥接模式桥接模式概念角色和职责案例概念 Bridge 模式又叫做桥接模式,是结构型的设计模式之一。Bridge模式基于类的最小设计原则,通过使用封装,聚合以及继承等行为来让不同的类承担不同的责任。它的主要特点是把抽象(abstraction)与行为实现(implementation)分离开来,从而可以保持各部分的独立性以及应对它们的功能扩展。 一般用来解决多对多的问题!两个集合中的元素
2016-11-28 17:50:18 352
原创 组合模式
组合模式组合模式概念角色及职责案例概念组合模式,是(构造型)结构型的设计模式之一。通过递归手段来构造树形的对象结构,并可以通过一个对象来访问整个对象树。角色及职责Component (树形结构的节点抽象)为所有的对象定义统一的接口(公共属性,行为等的定义)提供管理子节点对象的接口[可选]提供管理父节点对象的接口Leaf (树形结构的叶节点) Component的实现子类–普通文件C
2016-11-28 17:32:58 207
原创 适配器模式
适配器模式适配器模式概念角色和职责案例概念是构造型模式之一,通过Adapter模式可以改变已有类(或外部类)的接口形式。角色和职责Target: 目标类,也就是客户端希望使用的类,里面有希望得到的接口–对应案例中的18V。Adapter适配器,将实际接口转换为希望使用的接口–对应案例中的Adapter。适配器继承自目标类。Adaptee待适配的类,实际提供的类,通过适配器的功能,客
2016-11-28 17:23:17 330
原创 装饰模式
装饰模式装饰模式概念角色及职责案例概念 装饰( Decorator )模式又叫做包装模式。通过一种对客户端透明的方式来扩展对象的功能,是继承关系的一个替换方案。 装饰模式就是把要添加的附加功能分别放在单独的类中,并让这个类包含它要装饰的对象,当需要执行时,客户端就可以有选择地、按顺序地使用装饰功能包装对象。角色及职责component抽象产品类。是所有具体产品和装饰者的基类,客户端
2016-11-28 16:55:24 4467
原创 代理模式
代理模式代理模式概念角色及职责案例概念 代理模式,是结构型的设计模式之一,它可以为其他对象提供一种代理(Proxy)以控制对这个对象的访问。 所谓代理,是指具有与代理元(被代理的对象)具有相同接口的类,客户端必须通过代理与被代理的目标类交互,而代理一般在交互的过程中(交互前后),进行某些特别的处理。角色及职责subject(抽象主题角色): 真实主题与代理主题的共同接口。Real
2016-11-28 16:25:00 294
原创 原型模式
原型模式原型模式概念角色及职责案例概念 Prototype(原型)模式是一种对象创建型模式,它采取复制原型对象的方法来创建新的对象实例。使用Prototype模式创建的实例,具有与原型一样的数据。 1. 由原型对象(旧对象)自身创建目标对象。也就是说,对象创建这一动作发自原型对象本身。 2. 目标对象是原型对象的一个克隆。也就是说,通过Prototype模式创建的对象。 3.
2016-11-28 11:15:31 295
原创 创建者模式
创建者模式创建者模式概念角色及职责和工厂方法模式的区别案例概念 建造者模式也叫生成器模式,是由GoF提出的23种设计模式中的一种。Builder模式是一种对象创建型模式,用来隐藏复合对象的创建过程,它把复合对象的创建过程加以抽象,通过子类继承和重载的方式,动态地创建具有复合属性的对象。 对象的创建:Builder模式是为对象的创建而设计的模式- 创建的是一个复合对象:关注对象各部分的
2016-11-28 10:53:57 714
原创 抽象工厂模式
抽象工厂模式抽象工厂模式概念产品及其等级结构角色及职责案例概念 抽象工厂模式是所有形态的工厂模式中最为抽象和最其一般性的。抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品的具体类型的情况下,能够创建多个产品族的产品对象。产品及其等级结构对于工厂模式:要么生产香蕉、要么生产苹果、要么生产西红柿;但是不能同时生产多个产品。抽象工厂:能同时生产一个产品族(多个产品)。===》抽象工
2016-11-28 10:15:26 275
原创 工厂模式
工厂模式工厂模式简单工厂模式基本概念角色及职责优缺点案例工厂模式基本概念角色及职责案例工厂模式和简单工厂模式的比较简单工厂模式基本概念 简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式。通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。 有一个工厂类,专门生产别的类的实例,这些能被他生产的类具有相同的父类! 核心思想是用一个工厂来
2016-11-28 09:51:10 252
原创 单例模式
单例模式单例模式基本概念使用场景实现步骤懒汉式单例模式饿汉式单例模式多线程下的单例模式懒汉式单例模式的多线程改进关于程序并发机制总结基本概念 单例模式是一种对象创建型模式,使用单例模式,可以保证为一个类只生成唯一的实例对象。也就是说,在整个程序空间中,该类只存在一个实例对象。在代码上表现为整个程序中只调用一次该类的构造函数。 GoF对单例模式的定义是:保证一个类、只有一个
2016-11-22 13:13:37 617
原创 UML基础--设计模式基本概念
1. 软件设计: 把软件开发想清楚的过程2. 软件工程: 对软件开发全过程进行建模和管理3. 模型: 对现实问题的书面上的无歧义文字或图形的描述.简言之, 模型是对现实的简化. 通过模型, 人们可以了解所研究事物的本质.4. 建模: 对现实系统进行适当的过滤, 用适当的表现规则(编程语言)描述出简洁的模型. 建模是一种深入解决问题的方法5. 建模的原则选择建立什么样的模型对如何发现和解决问题
2016-11-21 21:37:02 718
原创 UML基础--类与类之间的关系
类与类之间的关系类与类之间的关系描述关系的UML图综述泛化依赖关联聚合组合实现描述关系的UML图综述依赖:虚线。一个类是另一个类的成员函数的参数或者返回值。关联:实线(箭头)。一个类是另一个类的成员变量。 2.0一般关联 2.1聚合:(菱形+实线),整体和部分的关系,汽车和发动机,汽车可以选择各型号的发动机。 2.2组合:(实心形+实线),生命体中整体和部分的关系,人和
2016-11-21 21:17:27 631
原创 C++版本快速排序
总体思想先找到一个枢轴,让他作为分水岭。通过一趟排序将待排序的记录分割成独立的两部分,前面一部分都比枢轴小,后面一部分逗比枢轴大,然后又分别对这两部分记录继续进行递归的排序,达到整个序列有序的目的。核心分离算法如何根据枢轴将无序序列分成两个独立的部分是快速排序的关键,具体做法是:采用两个辅助变量,一个指向待排序序列的第一个元素(low),另一个指向最后一个元素(high),这里的low和high都
2016-11-15 10:37:11 2074
转载 转载知乎大神设置普通路由器支持IPV6
作者:Kuroko Baka 链接:https://www.zhihu.com/question/31699421/answer/63285066 来源:知乎 著作权归作者所有,转载请联系作者获得授权。其实还有几个解决方案。 @吴浩说的已经很正确了。插上LAN口,这样就可以使用上IPv6了。 首先先回答为什么使用路由器就不能使用IPv6。 因为首先,市面上的路由器都是NAT路由器。这个路
2016-11-14 22:40:24 87537 3
原创 C++版本归并排序
总体思想假设初始序列含有n个元素,则可以看成n个有序的子序列,每个子序列只有一个元素,然后两两归并,得到(n/2+0.5)个长度为2或者1的有序子序列,再两两归并……如此反复执行,直到得到一个长度为n的有序序列为止,这种排序方法称之为2路归并排序。技巧先要将原始序列每次按照“二分法”分成两个子序列,4个子序列,8个子序列,直到n个子序列再按照两两归并的步骤往上归并,子序列又从n个变为(n/2+0
2016-11-14 11:25:03 663
原创 C++版本堆排序
堆是一种特殊的完全二叉树。大顶堆:每个节点的值都大于或等于其左右孩子节点的值的完全二叉树小顶堆:每个节点的值都小于或等于其左右孩子节点的值的完全二叉树总体思想:将待排序的序列构造成一个大顶堆。此时整个序列的最大值就是对顶的根节点。将他和堆的末尾元素交换,再将剩余的n-1个元素构成新的大顶堆,在得到整个序列的第二大的元素,如此反复执行就会得到一个有序的序列了。 注意:这里使用的是层序遍历法:
2016-11-13 23:21:01 689
原创 C++版本的希尔排序
前面三种排序算法(冒泡、选择以及插入排序)的时间复杂度都是O(n2n^{2}),相对来说性能最好的是插入排序,在元素个数少,且原序列基本有序的前提下,是非常高效的!所以对于人一个无序序列,我们可以认为的制造上述条件:元素个数少—分组基本有序—按照增量进行分组这样将相距某个增量的众多元素组成一个子序列,然后在子序列内部分别进行直接插入排序,得到的序列就是所谓的基本有序序列,之后就可以按照增量为1
2016-11-13 21:37:16 449
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人