设计模式
文章平均质量分 51
哈哈哈哈蜜瓜
。软件工程师。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
单例模式
1. 我们初学者一般都先接触(懒汉式、线程不安全)的写法 public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton getInstance() { if (instance == null) { inst原创 2017-02-07 10:23:34 · 257 阅读 · 0 评论 -
桥接模式
作用:某一个类,出现2个变化维度。原创 2017-04-10 21:51:07 · 219 阅读 · 0 评论 -
命令模式
在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“行为实现者”解耦?将一组行为抽象为对象,实现二者之间的松耦合。这就是命令模式命令模式的本质是对命令进行封装,将发出命令的责任和执行命令的责任分割开。命令模式允许请求的一方和接收的一方独立开来,使得请求的一方不必知道接收请求的一方的接口,更不必知道请求是怎么被接收,...原创 2017-04-11 20:48:59 · 231 阅读 · 0 评论 -
观察者模式
作用: 多个观察者对象同时监听某一个主题对象。主题对象状态上改变,就会通知所有的观察者。 事物之间的通信。有些事件可以通过广播的形式,但会出现突发情况。 原理:主题对象的数据在被修改的时候,会及时通知所有被观察者。 主题(被观察者,需要看他更新,某些操作时发出通知): 1.添加新的观察者,可能需要做不同的操作,给别的地方使用 2.删除观察者 3原创 2017-03-16 11:06:22 · 258 阅读 · 0 评论 -
装饰模式
作用:动态的将(责任)附加到(对象)上。易扩展。比继承好用 它的对象都可以单独使用,或者被装饰者 包装起来使用。 这里对象组件和装饰者 都共同继承某一类。是为了匹配同一对象,并且装饰者来替换对象组件。实现新加行为。 如果是继承,需要修改原程序。 继承的例子。 比如:我们要喝水,但是有的人会放很多的调味品。 public class Water { public void d原创 2017-03-17 11:32:46 · 209 阅读 · 0 评论 -
中介者模式
用一个‘中介者’,封装很多对象之间的交互(对象之间的关系为复杂的网状结构)。耦合松离 使用该模式之后,以中介者为中心,的星状结构。 有2个类,每个类中都有一个数字,保持,B中数字永远是A的100倍。 AB类就为同事类。 抽象中介者: abstract class AbstractMediator{ private AbstractColleague A; p原创 2017-04-17 20:24:30 · 200 阅读 · 0 评论 -
迭代器模式
作用:是对一个集合的遍历。 JDK,中Collection,的iterator遍历,就是该模式典型例子。 该模式(例举List),首先不会暴露内部结构(我们不知道list内部的结构),可以透明的访问,比如get(index)等。 迭代器角色: public interface Iterator{ public boolean hasNext(); public原创 2017-04-05 19:27:30 · 204 阅读 · 0 评论 -
享元模式
JAVA的字符串就是享元模式的例子。 String 声明之后就是final类型。并存到常量池。再次新建一个同样的字符串,亦然指向该常量池的地址。 这样就没必要创建大量的对象。节省资源。 该享元模式,就是共享空间,来避免大量同样内容对象的开销。 主要是区分内蕴状态(在享元对象内部,不会随着环境改变而不同,可以共享),外蕴状态(与前者相反,由客户端保存,并随着环境改变而改变,不可共享,原创 2017-04-20 10:07:15 · 220 阅读 · 0 评论 -
责任链模式
作用:多个对象都有机会去处理请求,避免请求发送者与接受者之间的耦合。原创 2017-04-17 15:46:21 · 228 阅读 · 0 评论 -
组合模式
作用:用面向对象模式,处理树结构。 将多个对象,组合成树。 用户用 单个子节点,就和使用树一样。有一致性。 你在总部办的会员卡,可以在分店使用。 需求,部分与整体层级明显。但是用户可以忽略这个 等级制度。都可以去使用。 就可以使用组合模式。 总部: public abstract class Market{ private String name;原创 2017-03-31 19:16:15 · 217 阅读 · 0 评论 -
外观模式
不需要客户与每一个子模块打交道,我们独立出一个门面,前台,我们只需要找他。 他为系统的一组接口提供了一个统一的访问接口。 作用:客户与子模块解耦,让子模块内部更容易扩展。 客户只需要和facade类交互。 门面角色: public class Facade{ private childServiceA a; private childServiceB b;原创 2017-03-23 21:05:15 · 242 阅读 · 0 评论 -
备忘录模式
不破坏封装的前提下(getter,setter),获得对象内部状态。存在其他地方,需要的时候,恢复到原先状态。 -----这不就是存档嘛 备忘对象: public class Computer{ private int useTime; private String name; private int level; getter...... setter...... }原创 2017-03-30 19:31:58 · 174 阅读 · 0 评论 -
策略模式
策略模式startegy(对象行为型) 主要应用于 实现某一个功能有多种算法。我们可以根据不同的环境来切换不同的算法。 如果是硬编码,多个算法用if...else 等连接,那我如果新增一个算法,那么需要再修改程序中的源代码,以及修改客户端的调用代码。 这样,代码会很复杂,而且维护困难。 主要矛盾,解决如何使算法可以独立于使用它的客户,而进行变化。 策略模式,将对象本身原创 2017-02-08 13:30:28 · 277 阅读 · 0 评论 -
代理模式
代理模式就是相当于代理。 比如你要租房子(真实对象,委托类),你会去找中介(代理类),让中介帮你租出去。通过中介(代理类),就可以把房子租出去(实现真实对象的部分功能)。为什么说部分,因为中介会参入一些其他的操作,比如多收些费用。 而且,中介不会透露你的真实身份,也就是屏蔽了不想对外开放的方法。 1.可以使用在 授权机制,不同级别的用户对同一对象拥有不同的访问权利。比如,论坛,分为原创 2017-02-09 11:48:15 · 229 阅读 · 0 评论 -
工厂模式
分为简单工厂模式 和 工厂方法模式 抽象工厂模式 作用:我们通常通过new 来构造对象实例。这样会带来一些问题。(对象初始值,构造对象前的一些操作等) 解决方法:建立一个工厂,它会生产对象,你只需要找工厂要就可以。 简单工厂:一个工厂来帮你生产所有对象。 工厂方法模式:由于对象很多,于是单独分出很多的具体工厂,生产具体对象。 原来的工厂就是一个抽象,需要制定具体工厂才能生产出来。原创 2017-03-18 15:18:04 · 482 阅读 · 0 评论 -
建造者模式
重点:人都会经历,婴儿、少年、青年、中年、老年。但是每个人又不完全一样。 建造者,在盖楼房,每一个房子肯定都不一样,但是盖楼的流程都是相同的。 作用:保证流程不变。原创 2017-03-21 15:01:29 · 353 阅读 · 0 评论 -
原型模式
通过一个原型对象,指明所有创建的对象的类型。之后复制这个原型对象,创建出更多类型的对象。 我们要生成的对象,必须实现可以‘克隆’自己的接口。复制实例对象,来创建一个新的实例。只要实现克隆自身的方法,就可以获得新对象。 1.简单形式 客户:提出,我需要一个对象。 抽象原型角色:一个接口 具体原型角色:被复制的对象。 public interface Prototype{原创 2017-03-21 20:11:00 · 375 阅读 · 0 评论 -
模板模式
作用:类的行为,由父类定框架,子类具体实现。 父类完成了部分功能,子类只需要,完成剩下的功能。 去除子类的重复代码、只需要实现细节、 在某些类的算法中,用了相同的方法,造成代码的重复。 控制子类扩展,子类必须遵守算法规则。 抽象对象: 实现模板,完成部分、 abstract class GoToSchoole{ //完成部分,框架原创 2017-03-28 21:56:36 · 190 阅读 · 0 评论 -
适配器模式
作用:将因为接口不兼容 而 不能一起工作的类,可以一起工作 将一个类的接口转换成客户希望的另一个接口。 电源插座有3口的 有2口。你笔记本想使用2口的,就需要一个适配器(再来一个3口插板),然后接在这个2口上、 找一个帮你调用。 目标接口:客户需要的接口。 需要适配的类: 适配器:包装 需要实配的类,然后转换成目标接口。 目标接口: public interface Tar原创 2017-03-22 11:47:03 · 221 阅读 · 0 评论 -
状态模式
原理:对象在内部状态改变时,改变它的行为。对象看起来。对象状态,对象实例的属性的值。行为,对象的功能。分离状态和行为。抽象状态类:public interface State{ public void handle(String parame)}具体状态类:public class ConcreterState implement State{ public void handle...原创 2017-03-29 22:26:40 · 230 阅读 · 0 评论 -
访问者模式
顾名思义:一个类,访问一个类 cClass A { public void a(){ System.out.println("A"); } public void b(B b){ b.showA(); } } B类,在这里相当于,一个访问者。 b访问a的方法。 class B{ public vo原创 2017-04-20 20:56:16 · 213 阅读 · 0 评论
分享