
设计模式学习记录
滴滴哒滴哒
兴趣使然的写代码
展开
-
设计模式学习笔记(1):策略模式
策略模式一、策略模式的定义: 策略模式是指对一系列的算法进行定义,并将每一个算法进行封装,使它们可以相互替换。算法独立于使用它们的客户变化。二、策略模式的应用场景: “什么”做“什么”,而后面这个动作是可变的。 多个类只区别在表现行为不同(多个类里面中的某些个方法不同),则可以使用策略模式,在运行时我们即可以动态选择具体执行的行为。 在没有策略模式之前...原创 2018-02-26 11:20:55 · 158 阅读 · 0 评论 -
设计模式学习笔记(2):观察者模式(1)
观察者模式是一个很重要的设计模式。 那么什么是观察者模式呢? 《Head First》中的定义: 观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。 在观察者模式中,主要有两个角色,一个是主题对象(Subject/Observable),另一个是观察者对象(Observer)。在模式中有一个主...原创 2018-02-26 19:49:47 · 164 阅读 · 0 评论 -
设计模式学习笔记(5):工厂模式(1)
工厂模式是一种很常见的设计模式,主要讨论的问题在于类的实例化。每当我们应用的时候,我们总要去new(实例化)一个对象。这是一个必须也很常见的过程,但是当我们要增加新的具体类型,就必须改变原有代码。这给我们的扩展造成巨大的不便。 如何改变这种情况呢?这时候就要用到工厂模式了。 工厂模式定义了一个创建对象的接口,但是由子类决定要实例化的是哪一个。工厂方法让类把实例化推迟...原创 2018-03-06 21:46:11 · 152 阅读 · 0 评论 -
设计模式学习笔记(3):观察者模式(2)
上一篇的观察者模式的笔记中提到的例子,只是Subject把自身状态“推”给Observer的方式。 //通知观察者信息发生改变了 @Override public void notifyObservers() { for (int i = 0;i < observers.size();i++){ Observer o...原创 2018-02-27 13:50:28 · 168 阅读 · 0 评论 -
设计模式学习笔记(6):工厂模式(2)
之前,我们讲了不算是设计模式的“简单工厂模式”,他将可变部分和固定部分进行分离,将对象的实例化封装到另一个类中,一定程度上减弱了扩展时带来的负面影响。接下来我们将叙述工厂方法。 首先,我们先讲下工厂模式的设计原则——依赖倒置原则:要依赖抽象,不要依赖具体类。这里说明了无论高层或低层组件都必须依赖于抽象。 依赖的意思:如果A的具体实现发生任何的改变都会影响B,那么B...原创 2018-03-07 11:58:55 · 154 阅读 · 0 评论 -
设计模式学习笔记(7):工厂模式(3)
接下来,我们来说下抽象工厂模式。 抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。 在这里我们可以看到这里指的“家族”,这是区别于普通工厂模式应用上比较大的差别。在一般的应用场景里,家族都指的是生产过程中有一定关联的产品,例如:pizza店里面的原料制作。 在前例中,因为各地加盟店开张,我们需要因地制宜地调整pizza...原创 2018-03-07 15:37:24 · 133 阅读 · 0 评论 -
设计模式学习笔记(8):单件模式
单件模式:确保一个类只有一个实例,并提供一个全局访问点。 这听上去和全局变量有点相似。但是在用法上会存在很大不同,全局变量基本上就是对对象的静态引用。 涉及到有些JVM的实现,在运行时,全局变量都会占用资源,如果这个全局变量非常消耗资源,但在这次执行的过程中又没用上它,这就会造成资源的巨大浪费,所以我们就要使用单件模式了。 PS:在java1.2版本...原创 2018-03-14 18:26:08 · 164 阅读 · 0 评论 -
设计模式学习笔记(4):装饰者模式
在之前面对系统扩展的方式,我们往往会选用继承的方式,在参数多的时候往往会造成子类数量的爆炸。如何在运行时动态扩展呢,这个时候装饰者模式应运而生。 一、装饰者模式的定义: 装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。 二、 应用场景: 1.需要扩展一个类的...原创 2018-03-01 14:06:46 · 177 阅读 · 0 评论