设计模式:概述

来源:互联网 发布:windows api 下载文件 编辑:程序博客网 时间:2024/06/15 21:50
在校期间一直用C做嵌入式开发,SoC片上编程,毕业后直接转成JAVA做Android开发,三年,感觉到了一个瓶颈,发现其实我一直在用面向过程的编程思维做面向对象的开发,所以,再开始重新学习下编程理论,夯实基础,读了大量的书籍

有几本书从中受益匪浅,没读过的童鞋,极力推荐不可错过
Robert C.Martin《代码整洁之道clean code》
Martin Fowler《重构-改善既有代码设计 Reactoring》
Andrew Hunt&David Thomas《程序员修炼之道——从小工到专家》
《高效程序员的45个习惯:敏捷开发修炼之道》
清晰的章节,唯美的话风,极具亲和力的描述,之前在开发过程中遇到的困惑、疑问,这几位前辈用委婉优雅而又极其简明的语言娓娓道来(这里也感谢译者,我想他们都一样风趣幽默),读了这几本书仿佛编程的大门才真正打开,茅塞顿开,甚至遗憾没有早点遇到它们,任何一个涉入编程领域的人都应该读一读,让我想起了《苏菲的世界》(貌似是这本,读书太多,混了^_^)里的一句话:一本好书的作者,是任何时代里当之无愧的贵族。我想他们计算机领域、是我们时代里无可厚非的贵族,最顶礼的膜拜送给他们,thx.
其实现在想来,遇到这几本书时机恰恰好吧,如果几年前的我来读他们,可能只会领会下精神,而今,当带着诸多疑问,走近他们的时候,一个一个答案迎面而来,一切如此珠联璧合。
 
同时,重新开始学习设计模式,决定记下来一为备忘,敝帚自珍便于日后回顾,二若能帮助到别人当然更好。

一、总结设计模式的核心

1)面向接口的编程,接口很伟大
接口,一个接口也可以是一个抽象类,或者一个基类也可以看作是一种接口的表现形式。要点在于,我们在面向接口编程的时候,可以使用多态,那么实际运行的代码只依赖于具体的接口(interface,抽象类,基类),而不管这些接口提供的功能是如何实现的,也就是说,接口将系统的不同部分隔离开来,同时又将它们连接在一起,伟大!
接口多态实现的基础,具体说应该是运行时多态(另外一种是编译时多态,通过函数重载实现),通过它可以调用子类或具体实现里面扩展的功能,它不再是一个已成定局的具体实现,而是一个‘接口’,具体如何实现的,谁实现的,有一万种可能,这就是接口的伟大,甚至自己是什么都没有,但是它给了你一条通向远方的路,让你的程序从一根电线杆长出了许多枝枝蔓蔓,瞬间扩展成一棵参天大树了,只能说,哇哦,伟大。
2)封装变化,抽象。
找到系统中变化的部分,将变化的部分同其它稳定的部分隔开。
尽管这个概念很简单,但是它几乎是所有设计模式的基础,所有模式都提供了使系统里变化的部分独立于其它部分的方法,其实,所有的设计模式实现语法上没有什么区别,说白了就是继承和委托,无它,只是根据要解决问题的不同划分。设计模式的使用都是双刃剑,如果你的应用需求不会发生变化,那就不需要用设计模式。
另外,SOLID:
单一职责原则(SRP):一个类应该只有一个发生变化的原则。
开闭原则原则(OCP):对扩展开放,对修改关闭。程序需要扩展的时候,不去修改原有的代码,通过接口和抽象类实现。
里氏替换原则(LSP):任何基类出现的地方,子类都可以出现。(父类 = new 基类,是多态实现的精髓所在吧
依赖倒置原则(DIP):依赖于抽象而不是依赖于具体。对抽象进行编程,不要对实现进行编程。
接口分离原则(ISP):接口细化,建立单一接口。调用者只能访问到它需要的方法

二、23种设计模式

创建型
1. Factory Method(工厂方法)
2. Abstract Factory(抽象工厂)
3. Builder(建造者)
4. Prototype(原型)
5. Singleton(单例)
结构型
6. Adapter Class/Object(适配器)
7. Bridge(桥接)
8. Composite(组合)
9. Decorator(装饰)
10. Facade(外观)
11. Flyweight(享元)
12. Proxy(代理)
行为型
13. Interpreter(解释器)
14. Template Method(模板方法)
15. Chain of Responsibility(责任链)
16. Command(命令)
17. Iterator(迭代器)
18. Mediator(中介者)
19. Memento(备忘录)
20. Observer(观察者)
21. State(状态)
22. Strategy(策略)
23. Visitor(访问者

0 0
原创粉丝点击