您的位置:首页 > 编程语言 > Java开发

设计模式简介

2017-11-23 16:57 218 查看
现在在看《大话设计模式》这本书,根据这本书做一些读书笔记。

第一章 简单工厂模式

有不同的产品类,而工厂类去选择某一个产品类进行生产(初始化),即在工厂类中进行switch判断。

第二章 策略模式

在将策略类进行封装调用。

第三章 单一职责原则

每个类的职责是单一的。

第四章 开闭原则

对扩展开放,对修改闭合。(只允许添加类,不允许修改类)。

第五章 依赖倒转原则

抽象不依赖细节,细节依赖抽象。高层模块不依赖于低层模块,都依赖抽象。面向接口的编程。

里氏替换原则: 父类 = new 子类。 父类这时执行的是子类方法()。(多态)

第六章 装饰模式

super()方法的调用艺术。

第七章 代理模式

Android中ContextWrapper、ContextImpl、context之间的关系。

第八章 工厂方法模式

一个产品对应一个工厂,在工厂中新建产品。和简单工厂模式相比,使自己更符合开闭原则,但又把判断的压力交给客户端来进行。

第九章 原型模式

cloneable的调用,浅克隆与深克隆。浅克隆只在内存中复制当前类,当前类中的引用则不进行复制。深克隆则全部复制,但要注意克隆循环。

第十章 模板模式

只把变化提取出来做成抽象类,在子类中重写。Android中自己写的BaseActivity就是使用的模板模式。

第十一章 迪米特法则

减少public的使用,public使用的越少,代码的内聚就越高。只依赖需要依赖的类。

第十二章 外观模式

一个子系统比较复杂,如果调用里边的逻辑就会加大工作量,可能会把人搞疯,这时候做一个外观接口,只要调用这个接口就能实现你需要的功能,这就是外观接口的实现。

第十三章 建造者模式

流程不变,就是步骤永远是固定的具体步骤的实现是不一致的模式。

第十四章 观察者模式

被观察者记录下观察者(用一个数组保存好所有的观察者),当某件事发生时被观察者发出通知调用观察者的方法。还有当被调用的观察者的方法不一致时,就会用到事件委托,将观察者对象和方法保存起来。[b]方法的保存
就用到了反射机制。

第十五章 抽象工厂模式

工厂方法模式是产品类和工厂类是一一对应的关系,当一产品还可以分类时,这时候就是也要把产品进行抽象处理,这时候就是抽象工厂模式了。现在的抽象工厂模式选择比较复杂,如果和简单模式一结合选择就简单了,但不是最优结果,如果用反射代替switch选择,工作量就会大大减少。

第十六章 状态模式

将一个长的 switch 或 if 判断给拆开,分成不同的类。这里讲的更清晰

第十七章 适配器模式

方法的替换,替换成合适的方法。为特例找方法的一种模式,在编码中相当于亡羊补牢,不能盲目使用。

第十八章 备忘录模式

实现的是数据的一种缓存,缓存类只对应相应的数据类,在数据类中进行实例化,并把所有的public暴露给它。需要一个发起类,备忘录,管理类。发起类保存数据过程和接收数据,备忘录类是保存数据的工具,管理类把工具保持,

第十九章 组合模式

树的表示结果,树的字节点是一致的。不管是叶子节点还是组合对象节点,都看做是一致的。然后递归。不是数据结构,而是对现实中存在例子的抽象。节点中有一个数组看一下是否有子节点,然后再一层层的往里边添加。

第二十章 迭代器模式

遍历的一种模式,有迭代器和容器组成,迭代器得到容器类,并把容器类中的数组给找到,方法有下一个,第一个,是否完成遍历。 迭代器的初始化需要在容器中,迭代器和容器类的耦合度很高。所以在java中迭代器和集合是共生共死的,但在java中已经把迭代器都封装好了,不需要我们重新写了。

第二十一章 单例模式

既简单又复杂的一个模式,简单是因为在一个线程中只判断一下是否为空即可。复杂是因为在不同的线程中要考虑并发问题(饿汉,懒汉)。

第二十二章 桥接模式

合成/聚合原则:要比继承更早思考的原则。即在编程的时候,首先要想到合成/聚合,然后才是继承。

桥接模式就是从多角度对系统进行分类,然后把每一个角度分离出来让他们独立变化,减少他们之间的耦合。

第二十三章 命令模式

命令和接受者聚合,调用者调用命令。命令类中记录接受者,并有一个执行方法。调用者有一个设置命令的方法和调用命令的方法。

敏捷开发原则:不要为代码添加基于猜测的、实际不需要的功能。

第二十四章 职责链模式

将 if 或 switch 语句拆开,分成不同的类,一个一个的执行下去。代码和状态模式的代码很像,只不过状态模式的下一级很明确,而职责链模式的下一级需要手动去设置。

第二十五章 中介者模式

通过中介进行通话的模式,但中介必须稳定,不然整个系统就出问题了。

第二十六章 享元模式

需要共享类和共享容器(共享工厂),用的时候从共享容器中获得,在共享容器中判断共享对象存不存在,不存在时则新建并保存,然后返回。

第二十七章 解释器模式

解释文法的一种表示,根据不同的语法编写实现不同的解释器。选择合适的解释器解释特定的语句。

第二十八章 访问者模式

需要访问者和接收者,还有一个接收者管理类,接收访问者管理类负责保存接收者并让接收者接受访问者。接收者有一个接收访问者的方法(即该方法的形参中有访问者),访问者中有一个访问接收访问者的方法(即该方法的形参中有接收访问者)。我们以国事访问为例讲一下。英国总统要去访问美国的一些工厂,英国总统就是访问者,美国就是接收者管理类,美国的工厂就是被访问者。英国总统访问,首先要给美国总统说你们发展的不错,我要访问你们的一些工厂,然后美国方面就安排一些工厂,英国总统到美国之后,美国这个管理类说我们去参观工厂吧,其实在参观工厂的过程就是工厂接待英国总统,接待之后英国总统说我想去看一下你的某地方。这就完成了访问。

第二十九章 总结

创建型模式

抽象工厂模式

建造者模式(有公用的建造实现接口,建造实现接口的实现是不同的,建造流程类里的是建造实现接口)

工厂方法模式

原型模式

单例模式

结构型模式

适配器模式

桥接模式

组合模式

装饰模式

外观模式

享元模式

代理模式

行为型模式

观察者模式

模板方法模式

命令模式

状态模式

职责链模式

解释器模式

中介者模式

访问者模式

策略模式

备忘录模式

迭代器模式

设计原则:

单一职责

依赖倒转

里氏替换

合成聚合

开放封闭

迪米特法则

结束后的话:看这本书的收获并没有把这些模式能用到自己的代码中,不过我对面向对象有了更深的认识。还有一些大神说,看设计模式使你可以更好地理解设计原则,当你根据设计原则写代码时,设计模式就会自然而然的出来了,所以说设计原则是关键。

还有设计模式是被那些不断改需求的老板逼出来的玩意。

了解了设计模式,读大神的代码才会更轻松,就会明白代码为什么会设计该接口。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  设计模式 java