- 博客(24)
- 收藏
- 关注
原创 设计模式之备忘录模式
录入大批人员资料。正在录入当前人资料时,发现上一个人录错了,此时需要恢复上一个人的资料,再进行修改。– Word文档编辑时,忽然电脑死机或断电,再打开时,可以看到word提示你恢复到以前的文档– 管理系统中,公文撤回功能。公文发送出去后,想撤回来。核心– 就是保存某个对象内部状态的拷贝,这样以后就可以将该对象恢复到原先的状态。• 结构:– 源发器类Originato...
2019-03-13 09:39:55
168
原创 设计模式之单例模式
场景:– 聊天室程序的创建。服务器创建好后,A,B,C三个客户端连上来公开聊天。A向服务器发送数据,服务器端聊天数据改变。我们希望将这些聊天数据分别发给其他在线的客户。也就是说,每个客户端需要更新服务器端得数据。– 网站上,很多人订阅了”java主题”的新闻。当有这个主题新闻时,就会将这些新闻发给所有订阅的人。– 大家一起玩CS游戏时,服务器需要将每个人的方位变化发给所...
2019-03-13 09:35:44
155
原创 设计模式之状态模式
状态模式(State)对象行为的变化是由于状态的变化引入,那么即当内部状态发生变化的时候,就会改变对象的行为,而这种改变视乎就改变了整个类。package com.xiaoqiang.gof23.actionnModel.state;/** * @author xiaoqiang * @date $(DATE)-$(TIME) * 状态类 */public interf...
2019-03-13 09:26:54
164
原创 设计模式之模板方法模式
介绍:模板方法模式是编程中经常用得到模式。它定义了一个操作中的算法骨架,将某些步骤延迟到子类实现。这样,新的子类可以在不改变一个算法结构的前提下重新定义改算法的某些特定的步骤核心:处理某个流程的代码已经具备,但是其中某个节点的代码暂时不能确定,因此,我们采用工厂方法的模式,将这个节点的代码实现转移给子类完成,即:处理步骤父类定义好,具体实现延迟到子类中定义...
2019-03-13 09:20:43
159
原创 设计模式之策略模式
策略模式(strategy) 软件开发中常常遇到这种情况,实现某一个功能有多种算法或者策略,我们可以根据应用场景的不同选择不同的算法或者策略来完成该功能。把一个类(A)中经常改变或者将来可能改变的部分提取出来,作为一个接口(B),然后在类(A)中包含这个接口(B),这样类(A)的实例在运行时就可以随意调用实现了这个接口的类(C)的行为。比如定义一系列的算法,把每一个算法封装起来, 并且使它...
2019-03-12 17:18:25
128
原创 设计模式之访问者模式
模式动机:– 对于存储在一个集合中的对象,他们可能具有不同的类型(即使有一个公共的接口),对于该集合中的对象,可以接受一类称为访问者的对象来访问,不同的访问者其访问方式也有所不同。• 定义:– 表示一个作用于某对象结构中的各元素的操作,它使我们可以在不改变个元素的类的前提下定义作用于这些元素的新操作。• 开发中的场景(应用范围非常窄,了解即可):– XML文档解析器...
2019-03-12 17:07:19
162
原创 设计模式之解释器模式
– 是一种不常用的设计模式– 用于描述如何构成一个简单的语言解释器,主要用于使用面向对象语言开发的编译器和解释器设计。– 当我们需要开发一种新的语言时,可以考虑使用解释器模式。– 尽量不要使用解释器模式,后期维护会有很大麻烦。在项目中,可以使用Jruby,Groovy、java的js引擎来替代解释器的作用,弥补java语言的不足。...
2019-03-12 15:12:36
138
原创 设计模式之命令模式
命令模式(Coomand)将一个请求封装为一个对象,从而让我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。命令模式是一种对象行为型模式,其别名为动作(Action)模式或事务(Transaction)模式。作用:命令模式可以将请求发送者和接收者完全解耦,发送者与接收者之间没有直接引用关系,发送请求的对象只需要知道如何发送请求,而不必知道如何...
2019-03-12 15:10:15
143
原创 设计模式之中介者模式
中介者模式(Mediator)生活中的场景:房产中介(你要租房直接和中介讲,让他去联系房主),总经理(各个公司部门直接的交流合作就通过他)用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。Mediator接口package com.xiaoqiang.gof23.actionnModel.me...
2019-03-12 11:13:58
275
原创 设计模式之迭代器模式
迭代器模式:Iterator提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。接口package com.xiaoqiang.gof23.actionnModel.iterator;/** * @author xiaoqiang * @date $(DATE)-$(TIME) */public interface MyIterator ...
2019-03-12 09:58:49
237
原创 设计模式之责任链模式
责任链模式(Chain)定义:责任链模式就是将请求的接收者对象连成一条链,然后在这一条链上传递请求,直到有个一接收者处理这个请求。通过这样一种方式,避免了请求者和接收者之间的耦合.场景:打牌时,轮流出牌,接力赛跑,公司的公文审批模拟公司里面,请假条的审批过程:• 如果请假天数小于3天,主任审批• 如果请假天数大于等于3天,小于10天,经理审批• 如果大于...
2019-03-11 23:22:49
129
原创 设计模式之享元模式
享元模式 (flyweight )场景:– 内存属于稀缺资源,不要随便浪费。如果有很多个完全相同或相似的对象,我们可以通过享元模式,节省内存。• 核心:– 享元模式以共享的方式高效地支持大量细粒度对象的重用。– 享元对象能做到共享的关键是区分了内部状态和外部状态。• 内部状态:可以共享,不会随环境变化而改变• 外部状态:不可以共享,会随环境变化而改变比如说,在围棋软件中...
2019-03-07 20:44:17
428
原创 设计模式之外观模式
外观模式facade迪米特法则(最少知识原则):一个软件实体应当尽可能少的与其他实体发生相互作用频率很高。哪里都会遇到。各种技术和框架中注册公司不使用外观模式使用外观模式...
2019-03-07 20:23:40
213
原创 设计模式之装饰模式
装饰模式(decorator)Component抽象构件角色:真实对象和装饰对象有相同的接口。这样,客户端对象就能够以与真实对象相同的方式同装饰对象交互。– ConcreteComponent 具体构件角色(真实对象): 比如:io流中的FileInputStream、FileOutputStreamDecorato...
2019-03-07 20:20:32
168
原创 设计模式之组合模式
composite场景:(杀毒软件等)把部分和整体的关系用树形结构来表示,从而使客户端可以使用统一的方式处理部分对象和整体对象。抽象构件(Component)角色: 定义了叶子和容器构件的共同点– 叶子(Leaf)构件角色:无子节点– 容器(Composite)构件角色: 有容器特征,可以包含子节点package com.xiaoqiang.gof23.st...
2019-03-07 20:11:53
200
原创 设计模式之桥接模式
Bridge处理多继承的关系,如要多加个品牌,或者增加个智能手机场景分析– 商城系统中常见的商品分类,以电脑为类,如何良好的处理商品分类销售的问题?– 这个场景中有两个变化的维度:电脑类型、电脑品牌。品牌一个接口package com.xiaoqiang.gof23.structureModel.bridge;/** * @author xi...
2019-03-07 20:01:12
178
原创 设计模式之代理模式
proxy作用:通过代理来控制对对象的访问可以详细控制访问某个(某类)对象的方法,在调用这个方法前做前置处理,调用这个方法后做后置处理。(即:AOP的微观实现!) 现实生活中的 经纪人,中介公司比如:歌手的演唱会: 经纪人安排 面谈 合同签字 机票车辆 歌手唱歌 收尾款 对于每个歌手流程都是一样的 就 歌手唱歌...
2019-03-07 19:47:04
185
原创 设计模式之适配器模式
适配器模式定义将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。和生活场景中的插头转接器有点像模式中的角色目标接口(Target) :客户所期待的接口,目标可以是具体的或者抽象的类,也可以是接口需要的适配类(Adaptee):需要适配的类或者适配者类适配器(Adapter):通过包装一个需要适...
2019-02-25 21:09:42
90
原创 设计模式之原型模式
原型模式prototype也叫克隆模式定义:通过new产生一个对象需要非常繁琐的数据准备或访问权限,则可以使用原型模式。– 就是java中的克隆技术,以某个对象为原型,复制出新的对象。显然,新的对象具备原型对象的特点– 优势有:效率高(直接克隆,避免了重新执行构造过程步骤) 。– 克隆类似于new,但是不同于new。new创建新的对象属性采用的是默认值。克隆出的对象的属性值完全和原...
2019-02-25 19:55:45
110
原创 设计模式之建造者模式
建造者模式场景:建造复杂产品时可以用到本质:分离了对象子组件的单独构造(由Builder来负责)和装配(由Director负责)。 从而可以构造出复杂的对象。这个模式适用于:某个对象的构建过程复杂的情况下使用。– 由于实现了构建和装配的解耦。不同的构建器,相同的装配,也可以做出不同的对象;相同的构建器,不同的装配顺序也可以做出不同的对象。也就是实现了构建算法、装配算法的解耦,实现了...
2019-02-25 19:43:12
82
原创 设计模式之抽象工厂模式
抽象工厂模式用来生产不同产品族的全部产品(对于增加新的产品,无能为力;支持增加产品族)抽象工厂模式是工厂方法模式的升级版本,在有多个业务品种、业务分类时,通过抽象工厂模式产生需要的对象是一种非常好的解决方式。 比如车子需要发动机,座椅,轮胎 这就是一个产品族,对于不同的品牌这些是不一样的,一个CarFactory对应生产一个品牌的Car...
2019-02-25 11:17:24
114
原创 设计模式之工厂方法模式
首先介绍一下简单工厂模式比如要生产车子,有Audi和Benz两种,然后实现了Car这个接口客户直接与CarFactory打交道获得对应Car的实例1:通过参数来确定需要的类型package com.xiaoqiang.gof23.createModel.factory.simplefactory;/** * @author xiaoqiang * * 简单工厂实现的第一...
2019-02-25 10:45:08
79
原创 设计模式之单例模式
1:定义 作为对象的创建模式,单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类被称为单例类2:特点单例类只有一个实例必须由自己创建自己的唯一实例(构造器私有)单例类提供提供唯一一个访问该实例的访问点3:优点单例模式只生成了一个实例,减少了系统性能的开销,当一个对象的产生需要比较多的资源时如读取配置文件或产生其他依赖对象时,则可...
2019-02-23 16:52:58
70
原创 设计模式
今天学习和总结设计模式,语言是用的Java。一起有23种设计模式,如下:创建型模式: 单例模式、工厂模式、抽象工厂模式、建造者模式、原型模式。总结• 创建型模式:都是用来帮助我们创建对象的!– 单例模式• 保证一个类只有一个实例,并且提供一个访问该实例的全局访问点。– 工厂模式• 简单工厂模式– 用来生产同一等级结构中的任意产品。(对于增加新的产品,需要修改已有代码)...
2019-02-23 15:31:30
81
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人