 |
| 第1页 |
 |
| 第5页 |
 |
| 第11页 |
 |
| 第23页 |
 |
| 第39页 |
参见附件(45643KB,677页)。
headfirst设计模式
HeadFirst设计模式(中文版)作者EricFreeman;ElElisabethFreeman是作家、讲师和技术顾问。共有14章,每章都介绍了几个设计模式,完整地涵盖了四人组版本全部23个设计模式,小编为大家准备了本书的版的,内容非常的高清,快来吧
书籍介绍
《Head First设计模式(中文版)》编辑推荐:强大的写作阵容。《Head First设计模式(中文版)》作者Eric Freeman;ElElisabeth Freeman是作家、讲师和技术顾问。Eric拥有耶鲁大学的计算机科学博士学位,E1isabath拥有耶鲁大学的计算机科学硕士学位。Kathy Sierra FHBert Bates是畅销的HeadFirst系列书籍的创立者,也是Sun公司Java开发员认证考试的开发者。《Head First设计模式(中文版)》的产品设计应用神经生物学、认知科学,以及学习理论,这使得此书能够将这些知识深深地印在你的脑海里,不容易被遗忘。《Head First设计模式(中文版)》的编写方式采用引导式教学,不直接告诉你该怎么做,而是利用故事当作引子,带领读者思考并想办法解决问题。解决问题的过程中又会产生一些新的问题,再继续思考、继续解决问题,这样可以加深体会。作者以大量的生活化故事当背景,例如第1章是鸭子,第2章是气象站,第3章是咖啡店,书中搭配大量的插图(几乎每一页都有图),所以阅读起来生动有趣,不会感觉到昏昏欲睡。作者还利用歪歪斜斜的手写字体,增加“现场感”。精心设计许多爆笑的对白,让学习过程不会太枯燥。还有模式告白节目,将设计模式拟人化成节目来宾,畅谈其内在的一切。《Head First设计模式(中文版)》
大量采用uML的class Diagram(Static Structure Diagram)。书中的例子程序虽然都是用JaVa编写,但是《Head First设计模式(中文版)》所介绍的内容对于任何00语言的用户都适用,包括c++和c孝。每一章都有数目不等的测验题。每章最后有一页要点整理,这也是精华所在,我都是利用这一页做复习。 Head First 设计模式(中文版)
目录:1设计模式入门欢迎来到设计模式世界2观察者模式让你的对象知悉现况3装饰者模式装饰对象4工厂模式烘烤OO的精华5单件模式独一无二的对象
6命令模式封装调用7适配器模式与外观模式随遇模式8模板方法模式封装算法9选代器与组合模式管理良好的集合10状态模式事物的状态11代理模式控制对象访问12复合模式模式中的模型13与设计模式相处真实世界中的模式
Head First设计模式的种类
介绍了23种设计模式
总体来说设计模式分为三大类:
创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式
相关内容图片预览






Head First设计模式:迭代器模式
迭代器模式
因为这一章涉及到两个模式,内容有点多,还有一个组合模式留到下一篇写吧。
有许多种方法可以把对象堆起来成为一个集合(collection)。你可以把它们放进数组、堆栈、列表或者是散列表(Hashtable)中,这是你的自由。每一种都有它自己的优点和适合的使用时机,但总有一个时候,你的客户想要遍历这些对象,而当他这么做时,你打算让客户看到你的实现吗?我们当然希望最好不要!这太不专业了。本章的迭代器模式将能让客户遍历你的对象而又无法窥视你存储对象的方式。
先来看看迭代器模式的定义:
提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。
题例:有两家餐厅,披萨店和煎饼店,它们合并了,虽然可以在一个地方同时想用煎饼屋的早餐和餐厅的午餐,但是煎饼屋的菜单用用的ArrayList记录菜单的,而餐厅用的是数组,而两家餐馆都不愿意修改自己的实现。毕竟有很多代码依赖它们。
幸好两家都统一实现了MenuItem:
//菜单项,保存了菜单信息public class MenuItem { private String name; private String description; private boolean vegetarian; private double price; public MenuItem(String name, String description, boolean vegetarian, double price) { super(); this.name = name; this.description = description; this.vegetarian = vegetarian; this.price = price; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public boolean isVegetarian() { return vegetarian; } public void setVegetarian(boolean vegetarian) { this.vegetarian = vegetarian; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; }}
再来看看两家店各自的菜单实现:
煎饼店:用ArrayList
// 煎饼餐店对象,用ArrayList保存了菜单。public class PancakeHouseMenu { ArrayList