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 设计模式-- 总结的更多相关文章
- MVVM设计模式和WPF中的实现(四)事件绑定
MVVM设计模式和在WPF中的实现(四) 事件绑定 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中 ...
- java EE设计模式简介
1.何为设计模式 设计模式提供了对常见应用设计问题的解决方案.在面向对象的编程中,设计模式通常在解决与对象创建和交互相关的问题,而非整体软件架构所面对的大规模问题,它们以样板代码的形式提供了通用的解决 ...
- 计算机程序的思维逻辑 (54) - 剖析Collections - 设计模式
上节我们提到,类Collections中大概有两类功能,第一类是对容器接口对象进行操作,第二类是返回一个容器接口对象,上节我们介绍了第一类,本节我们介绍第二类. 第二类方法大概可以分为两组: 接受其他 ...
- 《JavaScript设计模式 张》整理
最近在研读另外一本关于设计模式的书<JavaScript设计模式>,这本书中描述了更多的设计模式. 一.创建型设计模式 包括简单工厂.工厂方法.抽象工厂.建造者.原型和单例模式. 1)简单 ...
- 《JavaScript设计模式与开发实践》整理
最近在研读一本书<JavaScript设计模式与开发实践>,进阶用的. 一.高阶函数 高阶函数是指至少满足下列条件之一的函数. 1. 函数可以作为参数被传递. 2. 函数可以作为返回值输出 ...
- 设计模式之行为类模式大PK
行为类模式大PK 行为类模式包括责任链模式.命令模式.解释器模式.迭代器模式.中介者模式.备忘录模式.观察者模式.状态模式.策略 ...
- .NET设计模式访问者模式
一.访问者模式的定义: 表示一个作用于某对象结构中的各元素的操作.它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作. 二.访问者模式的结构和角色: 1.Visitor 抽象访问者角色,为该 ...
- Java开发中的23种设计模式详解
[放弃了原文访问者模式的Demo,自己写了一个新使用场景的Demo,加上了自己的理解] [源码地址:https://github.com/leon66666/DesignPattern] 一.设计模式 ...
- java 设计模式
目录: 设计模式六大原则(1):单一职责原则 设计模式六大原则(2):里氏替换原则 设计模式六大原则(3):依赖倒置原则 设计模式六大原则(4):接口隔离原则 设计模式六大原则(5):迪米特法则 设计 ...
- 设计模式之单例模式(Singleton)
设计模式之单例模式(Singleton) 设计模式是前辈的一些经验总结之后的精髓,学习设计模式可以针对不同的问题给出更加优雅的解答 单例模式可分为俩种:懒汉模式和饿汉模式.俩种模式分别有不同的优势和缺 ...
随机推荐
- 对ADC(DAC)的线性度(INL和DNL)的一点理解 [转]
大家在使用ADC的时候,往往最关注位数,而对ADC的线性度往往会忽略. 其实这个线性度也是ADC非常重要的指标,ADC(或DAC,其实ADC也是由DAC组成的)线性度指标有两个: INL:翻译过来叫“ ...
- viewport设置
<meta name="viewport" content="width=device-width, initial-scale=1.0,user-scalable ...
- 【转】PowerShell 函数(Function)
转至:http://blog.csdn.net/kk185800961/article/details/49022395 函数基本操作: [plain] view plain copy #创建函数 F ...
- Oracle数据访问组件ODAC的安装方法
Oracle数据访问组件ODAC(Oracle Data Access Components)顾名思义就是用来访问Oracle数据库的小程序.我们可以编程调用这些组件来实现在没有安装Oracle数据库 ...
- Configure Visual Studio 2013 for debugging .NET framework
https://referencesource.microsoft.com/ In order to configure Visual Studio 2013 do the following in ...
- Eclipse断点调试方法
1. 条件断点 断点大家都比较熟悉,在Eclipse Java 编辑区的行头双击就会得到一个断点,代码会运行到此处时停止. 条件断点,顾名思义就是一个有一定条件的断点,只有满足了用户设置的条件,代码才 ...
- [译]Dynamics AX 2012 R2 BI系列-规划分析的注意事项
https://msdn.microsoft.com/en-us/library/gg731898.aspx 在开始实施AX的分析特性前,有很多事情要考虑.本文描述了你必须考虑的事情,和在 ...
- Centos7下Etcd集群搭建
一.简介 "A highly-available key value store for shared configuration and service discovery." ...
- 【转】eclipse luna 无法安装veloeclipse问题
转载地址:https://code.google.com/p/veloeclipse/issues/detail?id=47 I tried to install veloeclipse 2.0.8 ...
- [mysql]throw exception
CREATE PROCEDURE pro_throwException (errorCode char(5), errorMessage text) BEGIN SIGNAL SQLSTATE err ...