Head First 设计模式-- 总结
Posted bad_boy_f
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Head First 设计模式-- 总结相关的知识,希望对你有一定的参考价值。
模式汇总:
装饰者 :包装一个对象以得到新的行为
状态 :封装了基于状态的行为,并使用委托在行为之间切换
迭代器 :在对象的结合中游走,而不暴露集合的实现
外观 :简化一群类的接口
策略 :封装可以互换的行为,病史用委托类决定要使用哪一个
代理 :包装对象,以控制对此对象的访问
工厂方法 :由子类决定要创建的对象是哪一个
适配器 :封装对象,并提供不同的接口
观察者 :让对象能够在状态改变时被通知
模板方法 :由子类决定如何实现一个算法中的步骤
组合 :客户用一致的方式处理对象集合和单个对象
单例 :确保有且只有一个对象被创建
抽象工厂 :允许客户创建对象的家族,而无需指定他们的具体类
命令 :封装请求成为对象
用到的设计原则:
- 封装变化
- 多用组合少用继承
- 针对接口编程,不针对实现编程
- 松耦合
- 开闭原则(类应该对扩展开放对修改关闭)
- 依赖抽象,不依赖具体
- 迪米特原则(只和朋友交谈)
- 别找我,我会找你
- 类应该只有一个改变的理由
模式分类:
创建型:Singleton, Builder, Abstract Factory, Factory Method, Prototype
行为型:Template Method, Visitor, Iterator, Command, Observer, State, Strategy
结构型:Decorator, Proxy, Composite, Bridge, Adapter, Flyweight
我们使用设计模式的目的是为了让我们的代码更简单,让以后更容易扩展。使用设计的模式的时候,一定会比不使用设计的代码更复杂,因此,对于一些没必要使用设计模式的地方,就不要使用设计模式。像一些以后不会修改的地方,不会扩展的地方,直接写就可以了,不要增加冗余的代码来增加什么设计模式。一段有设计模式的代码更从其他人的角度来看更加难理解。在使用设计模式的时候一定权衡好,时刻记住一点,我们使用设计模式只是为了增加我们以后的扩展性。还有,在写完一段代码的时候,想想怎么可以重构一下简化代码,实际上,写程序的逻辑应该只是写完这段代码花的时间最少的一部分,更多的时间应该是整理代码,能重用的就重用。
写代码的时候记住那些设计原则就能帮助我们写出优秀的代码。
读后感:这篇文章是读完这本几天后写的,在一开始看的时候,肯定是看到哪个模式的时候已经把这个模式自我感觉看透了,但是现在在回头想想,能像一开始那样记住的并不剩几个了,给我的感觉其实并不必要去死记硬背一些什么模式改怎么写,主要在脑子里有一些设计模式的概念,在碰到问题的时候,先从脑子搜索一下哪个模式能解决类似的问题,到那时候在去找也可以,如果从设计原则出发开始思考问题,也许到时候不知不觉的就发现,原来这个地方我还用到了设计模式。所以,这本给我最大的收益就是让我记住了那些设计原则,在写代码的时候能先从设计原则出发思考问题。并没有强求硬要写什么模式,模式只是为了以后扩展方便,如果你都不知道哪个地方以后会扩展,那在第一次就写那么复杂的代码干什么,想让别人知道自己多NB?如果知道了这个地方以后一定会有扩展,那么,一定要想好用哪个设计模式,这种时候才是应该用设计模式的地方。这本书后面还面还有几个模式,这里也就不写了,抓住重点就可以了。
以上是关于Head First 设计模式-- 总结的主要内容,如果未能解决你的问题,请参考以下文章