目录
第1章设计模式概述
1.1设计模式的诞生与发展
1.1.1模式的诞生与定义
1.1.2软件模式概述
1.1.3设计模式的发展
1.2设计模式的定义与分类<p> </p> <p>目录</p> <p> </p> <p>第1章设计模式概述</p> <p> </p> <p>1.1设计模式的诞生与发展</p> <p> </p> <p>1.1.1模式的诞生与定义</p> <p> </p> <p>1.1.2软件模式概述</p> <p> </p> <p>1.1.3设计模式的发展</p> <p> </p> <p>1.2设计模式的定义与分类</p> <p> </p> <p>1.2.1设计模式的定义</p> <p> </p> <p>1.2.2设计模式的基本要素</p> <p> </p> <p>1.2.3设计模式的分类</p> <p> </p> <p>1.3GoF设计模式简介</p> <p> </p> <p>1.4设计模式的优点</p> <p> </p> <p>1.5本章小结</p> <p> </p> <p>1.6习题</p> <p> </p> <p>第2章面向对象设计原则</p> <p> </p> <p>2.1面向对象设计原则概述</p> <p> </p> <p>2.2单一职责原则</p> <p> </p> <p>2.3开闭原则</p> <p> </p> <p>2.4里氏代换原则</p> <p> </p> <p>2.5依赖倒转原则</p> <p> </p> <p>2.6接口隔离原则</p> <p> </p> <p>2.7合成复用原则</p> <p> </p> <p>2.8迪米特法则</p> <p> </p> <p>2.9本章小结</p> <p> </p> <p>2.10习题</p> <p> </p> <p>第3章简单工厂模式</p> <p> </p> <p>3.1创建型模式</p> <p> </p> <p>3.2简单工厂模式概述</p> <p> </p> <p>3.3简单工厂模式的结构与实现</p> <p> </p> <p>3.3.1简单工厂模式的结构</p> <p> </p> <p>3.3.2简单工厂模式的实现</p> <p> </p> <p>3.4简单工厂模式的应用实例</p> <p> </p> <p>3.5创建对象与使用对象</p> <p> </p> <p>3.6简单工厂模式的简化</p> <p> </p> <p>3.7简单工厂模式的优缺点与适用环境</p> <p> </p> <p>3.7.1简单工厂模式的优点</p> <p> </p> <p>3.7.2简单工厂模式的缺点</p> <p> </p> <p>3.7.3简单工厂模式的适用环境</p> <p> </p> <p>3.8本章小结</p> <p> </p> <p>3.9习题</p> <p> </p> <p>第4章工厂方法模式</p> <p> </p> <p>4.1工厂方法模式概述</p> <p> </p> <p>4.2工厂方法模式的结构与实现</p> <p> </p> <p>4.2.1工厂方法模式的结构</p> <p> </p> <p>4.2.2工厂方法模式的实现</p> <p> </p> <p>4.3工厂方法模式的应用实例</p> <p> </p> <p>4.4配置文件与反射</p> <p> </p> <p>4.5工厂方法的重载</p> <p> </p> <p>4.6工厂方法的隐藏</p> <p> </p> <p>4.7工厂方法模式的优缺点与适用环境</p> <p> </p> <p>4.7.1工厂方法模式的优点</p> <p> </p> <p>4.7.2工厂方法模式的缺点</p> <p> </p> <p>4.7.3工厂方法模式的适用环境</p> <p> </p> <p>4.8本章小结</p> <p> </p> <p>4.9习题</p> <p> </p> <p>第5章抽象工厂模式</p> <p> </p> <p>5.1产品等级结构与产品族</p> <p> </p> <p>5.2抽象工厂模式概述</p> <p> </p> <p>5.3抽象工厂模式的结构与实现</p> <p> </p> <p>5.3.1抽象工厂模式的结构</p> <p> </p> <p>5.3.2抽象工厂模式的实现</p> <p> </p> <p>5.4抽象工厂模式的应用实例</p> <p> </p> <p>5.5开闭原则的倾斜性</p> <p> </p> <p>5.6抽象工厂模式的优缺点与适用环境</p> <p> </p> <p>5.6.1抽象工厂模式的优点</p> <p> </p> <p>5.6.2抽象工厂模式的缺点</p> <p> </p> <p>5.6.3抽象工厂模式的适用环境</p> <p> </p> <p>5.7本章小结</p> <p> </p> <p>5.8习题</p> <p> </p> <p>第6章建造者模式</p> <p> </p> <p>6.1建造者模式概述</p> <p> </p> <p>6.2建造者模式的结构与实现</p> <p> </p> <p>6.2.1建造者模式的结构</p> <p> </p> <p>6.2.2建造者模式的实现</p> <p> </p> <p>6.3建造者模式的应用实例</p> <p> </p> <p>6.4指挥者类的深入讨论</p> <p> </p> <p>6.5建造者模式的优缺点与适用环境</p> <p> </p> <p>6.5.1建造者模式的优点</p> <p> </p> <p>6.5.2建造者模式的缺点</p> <p> </p> <p>6.5.3建造者模式的适用环境</p> <p> </p> <p>6.6本章小结</p> <p> </p> <p>6.7习题</p> <p> </p> <p>第7章原型模式</p> <p> </p> <p>7.1原型模式概述</p> <p> </p> <p>7.2原型模式的结构与实现</p> <p> </p> <p>7.2.1原型模式的结构</p> <p> </p> <p>7.2.2浅克隆与深克隆</p> <p> </p> <p>7.2.3原型模式的实现</p> <p> </p> <p>7.3原型模式的应用实例</p> <p> </p> <p>7.4原型管理器</p> <p> </p> <p>7.5原型模式的优缺点与适用环境</p> <p> </p> <p>7.5.1原型模式的优点</p> <p> </p> <p>7.5.2原型模式的缺点</p> <p> </p> <p>7.5.3原型模式的适用环境</p> <p> </p> <p>7.6本章小结</p> <p> </p> <p>7.7习题</p> <p> </p> <p>第8章单例模式</p> <p> </p> <p>8.1单例模式概述</p> <p> </p> <p>8.2单例模式的结构与实现</p> <p> </p> <p>8.2.1单例模式的结构</p> <p> </p> <p>8.2.2单例模式的实现</p> <p> </p> <p>8.3单例模式的应用实例</p> <p> </p> <p>8.4饿汉式单例与懒汉式单例</p> <p> </p> <p>8.5单例模式的优缺点与适用环境</p> <p> </p> <p>8.5.1单例模式的优点</p> <p> </p> <p>8.5.2单例模式的缺点</p> <p> </p> <p>8.5.3单例模式的适用环境</p> <p> </p> <p>8.6本章小结</p> <p> </p> <p>8.7习题</p> <p> </p> <p>第9章适配器模式</p> <p> </p> <p>9.1结构型模式</p> <p> </p> <p>9.2适配器模式概述</p> <p> </p> <p>9.3适配器模式的结构与实现</p> <p> </p> <p>9.3.1适配器模式的结构</p> <p> </p> <p>9.3.2适配器模式的实现</p> <p> </p> <p>9.4适配器模式的应用实例</p> <p> </p> <p>9.5缺省适配器模式</p> <p> </p> <p>9.6双向适配器</p> <p> </p> <p>9.7适配器模式的优缺点与适用环境</p> <p> </p> <p>9.7.1适配器模式的优点</p> <p> </p> <p>9.7.2适配器模式的缺点</p> <p> </p> <p>9.7.3适配器模式的适用环境</p> <p> </p> <p>9.8本章小结</p> <p> </p> <p>9.9习题</p> <p> </p> <p>第10章桥接模式</p> <p> </p> <p>10.1桥接模式概述</p> <p> </p> <p>10.2桥接模式的结构与实现</p> <p> </p> <p>10.2.1桥接模式的结构</p> <p> </p> <p>10.2.2桥接模式的实现</p> <p> </p> <p>10.3桥接模式的应用实例</p> <p> </p> <p>10.4桥接模式与适配器模式联用</p> <p> </p> <p>10.5桥接模式的优缺点与适用环境</p> <p> </p> <p>10.5.1桥接模式的优点</p> <p> </p> <p>10.5.2桥接模式的缺点</p> <p> </p> <p>10.5.3桥接模式的适用环境</p> <p> </p> <p>10.6本章小结</p> <p> </p> <p>10.7习题</p> <p> </p> <p>第11章组合模式</p> <p> </p> <p>11.1组合模式概述</p> <p> </p> <p>11.2组合模式的结构与实现</p> <p> </p> <p>11.2.1组合模式的结构</p> <p> </p> <p>11.2.2组合模式的实现</p> <p> </p> <p>11.3组合模式的应用实例</p> <p> </p> <p>11.4透明组合模式与**组合模式</p> <p> </p> <p>11.5组合模式的优缺点与适用环境</p> <p> </p> <p>11.5.1组合模式的优点</p> <p> </p> <p>11.5.2组合模式的缺点</p> <p> </p> <p>11.5.3组合模式的适用环境</p> <p> </p> <p>11.6本章小结</p> <p> </p> <p>11.7习题</p> <p> </p> <p>第12章装饰模式</p> <p> </p> <p>12.1装饰模式概述</p> <p> </p> <p>12.2装饰模式的结构与实现</p> <p> </p> <p>12.2.1装饰模式的结构</p> <p> </p> <p>12.2.2装饰模式的实现</p> <p> </p> <p>12.3装饰模式的应用实例</p> <p> </p> <p>12.4透明装饰模式与半透明装饰模式</p> <p> </p> <p>12.5装饰模式的优缺点与适用环境</p> <p> </p> <p>12.5.1装饰模式的优点</p> <p> </p> <p>12.5.2装饰模式的缺点</p> <p> </p> <p>12.5.3装饰模式的适用环境</p> <p> </p> <p>12.6本章小结</p> <p> </p> <p>12.7习题</p> <p> </p> <p>第13章外观模式</p> <p> </p> <p>13.1外观模式概述</p> <p> </p> <p>13.2外观模式的结构与实现</p> <p> </p> <p>13.2.1外观模式的结构</p> <p> </p> <p>13.2.2外观模式的实现</p> <p> </p> <p>13.3外观模式的应用实例</p> <p> </p> <p>13.4抽象外观类</p> <p> </p> <p>13.5外观模式的优缺点与适用环境</p> <p> </p> <p>13.5.1外观模式的优点</p> <p> </p> <p>13.5.2外观模式的缺点</p> <p> </p> <p>13.5.3外观模式的适用环境</p> <p> </p> <p>13.6本章小结</p> <p> </p> <p>13.7习题</p> <p> </p> <p>第14章享元模式</p> <p> </p> <p>14.1享元模式概述</p> <p> </p> <p>14.2享元模式的结构与实现</p> <p> </p> <p>14.2.1享元模式的结构</p> <p> </p> <p>14.2.2享元模式的实现</p> <p> </p> <p>14.3享元模式的应用实例</p> <p> </p> <p>14.4有外部状态的享元模式</p> <p> </p> <p>14.5单纯享元模式和复合享元模式</p> <p> </p> <p>14.6享元模式的优缺点与适用环境</p> <p> </p> <p>14.6.1享元模式的优点</p> <p> </p> <p>14.6.2享元模式的缺点</p> <p> </p> <p>14.6.3享元模式的适用环境</p> <p> </p> <p>14.7本章小结</p> <p> </p> <p>14.8习题</p> <p> </p> <p>第15章代理模式</p> <p> </p> <p>15.1代理模式概述</p> <p> </p> <p>15.2代理模式的结构与实现</p> <p> </p> <p>15.2.1代理模式的结构</p> <p> </p> <p>15.2.2代理模式的实现</p> <p> </p> <p>15.3代理模式的应用实例</p> <p> </p> <p>15.4远程代理</p> <p> </p> <p>15.5虚拟代理</p> <p> </p> <p>15.6缓冲代理</p> <p> </p> <p>15.7代理模式的优缺点与适用环境</p> <p> </p> <p>15.7.1代理模式的优点</p> <p> </p> <p>15.7.2代理模式的缺点</p> <p> </p> <p>15.7.3代理模式的适用环境</p> <p> </p> <p>15.8本章小结</p> <p> </p> <p>15.9习题</p> <p> </p> <p>第16章职责链模式</p> <p> </p> <p>16.1行为型模式</p> <p> </p> <p>16.2职责链模式概述</p> <p> </p> <p>16.3职责链模式的结构与实现</p> <p> </p> <p>16.3.1职责链模式的结构</p> <p> </p> <p>16.3.2职责链模式的实现</p> <p> </p> <p>16.4职责链模式的应用实例</p> <p> </p> <p>16.5纯与不纯的职责链模式</p> <p> </p> <p>16.6职责链模式的优缺点与适用环境</p> <p> </p> <p>16.6.1职责链模式的优点</p> <p> </p> <p>16.6.2职责链模式的缺点</p> <p> </p> <p>16.6.3职责链模式的适用环境</p> <p> </p> <p>16.7本章小结</p> <p> </p> <p>16.8习题</p> <p> </p> <p>第17章命令模式</p> <p> </p> <p>17.1命令模式概述</p> <p> </p> <p>17.2命令模式的结构与实现</p> <p> </p> <p>17.2.1命令模式的结构</p> <p> </p> <p>17.2.2命令模式的实现</p> <p> </p> <p>17.3命令模式的应用实例</p> <p> </p> <p>17.4实现命令队列</p> <p> </p> <p>17.5记录请求日志</p> <p> </p> <p>17.6实现撤销操作</p> <p> </p> <p>17.7宏命令</p> <p> </p> <p>17.8命令模式的优缺点与适用环境</p> <p> </p> <p>17.8.1命令模式的优点</p> <p> </p> <p>17.8.2命令模式的缺点</p> <p> </p> <p>17.8.3命令模式的适用环境</p> <p> </p> <p>17.9本章小结</p> <p> </p> <p>17.10习题</p> <p> </p> <p>第18章解释器模式</p> <p> </p> <p>18.1解释器模式概述</p> <p> </p> <p>18.2文法规则和抽象语法树</p> <p> </p> <p>18.3解释器模式的结构与实现</p> <p> </p> <p>18.3.1解释器模式的结构</p> <p> </p> <p>18.3.2解释器模式的实现</p> <p> </p> <p>18.4解释器模式的应用实例</p> <p> </p> <p>18.5解释器模式的优缺点与适用环境</p> <p> </p> <p>18.5.1解释器模式的优点</p> <p> </p> <p>18.5.2解释器模式的缺点</p> <p> </p> <p>18.5.3解释器模式的适用环境</p> <p> </p> <p>18.6本章小结</p> <p> </p> <p>18.7习题</p> <p> </p> <p>第19章迭代器模式</p> <p> </p> <p>19.1迭代器模式概述</p> <p> </p> <p>19.2迭代器模式的结构与实现</p> <p> </p> <p>19.2.1迭代器模式的结构</p> <p> </p> <p>19.2.2迭代器模式的实现</p> <p> </p> <p>19.3迭代器模式的应用实例</p> <p> </p> <p>19.4使用内部类实现迭代器</p> <p> </p> <p>19.5.NET内置迭代器</p> <p> </p> <p>19.6迭代器模式的优缺点与适用环境</p> <p> </p> <p>19.6.1迭代器模式的优点</p> <p> </p> <p>19.6.2迭代器模式的缺点</p> <p> </p> <p>19.6.3迭代器模式的适用环境</p> <p> </p> <p>19.7本章小结</p> <p> </p> <p>19.8习题</p> <p> </p> <p>第20章中介者模式</p> <p> </p> <p>20.1中介者模式概述</p> <p> </p> <p>20.2中介者模式的结构与实现</p> <p> </p> <p>20.2.1中介者模式的结构</p> <p> </p> <p>20.2.2中介者模式的实现</p> <p> </p> <p>20.3中介者模式的应用实例</p> <p> </p> <p>20.4扩展中介者与同事类</p> <p> </p> <p>20.5中介者模式的优缺点与适用环境</p> <p> </p> <p>20.5.1中介者模式的优点</p> <p> </p> <p>20.5.2中介者模式的缺点</p> <p> </p> <p>20.5.3中介者模式的适用环境</p> <p> </p> <p>20.6本章小结</p> <p> </p> <p>20.7习题</p> <p> </p> <p>第21章备忘录模式</p> <p> </p> <p>21.1备忘录模式概述</p> <p> </p> <p>21.2备忘录模式的结构与实现</p> <p> </p> <p>21.2.1备忘录模式的结构</p> <p> </p> <p>21.2.2备忘录模式的实现</p> <p> </p> <p>21.3备忘录模式的应用实例</p> <p> </p> <p>21.4实现多次撤销</p> <p> </p> <p>21.5备忘录模式的优缺点与适用环境</p> <p> </p> <p>21.5.1备忘录模式的优点</p> <p> </p> <p>21.5.2备忘录模式的缺点</p> <p> </p> <p>21.5.3备忘录模式的适用环境</p> <p> </p> <p>21.6本章小结</p> <p> </p> <p>21.7习题</p> <p> </p> <p>第22章观察者模式</p> <p> </p> <p>22.1观察者模式概述</p> <p> </p> <p>22.2观察者模式的结构与实现</p> <p> </p> <p>22.2.1观察者模式的结构</p> <p> </p> <p>22.2.2观察者模式的实现</p> <p> </p> <p>22.3观察者模式的应用实例</p> <p> </p> <p>22.4观察者模式与.NET中的委托事件模型</p> <p> </p> <p>22.5观察者模式与MVC</p> <p> </p> <p>22.6观察者模式的优缺点与适用环境</p> <p> </p> <p>22.6.1观察者模式的优点</p> <p> </p> <p>22.6.2观察者模式的缺点</p> <p> </p> <p>22.6.3观察者模式的适用环境</p> <p> </p> <p>22.7本章小结</p> <p> </p> <p>22.8习题</p> <p> </p> <p>第23章状态模式</p> <p> </p> <p>23.1状态模式概述</p> <p> </p> <p>23.2状态模式的结构与实现</p> <p> </p> <p>23.2.1状态模式的结构</p> <p> </p> <p>23.2.2状态模式的实现</p> <p> </p> <p>23.3状态模式的应用实例</p> <p> </p> <p>23.4共享状态</p> <p> </p> <p>23.5使用环境类实现状态的转换</p> <p> </p> <p>23.6状态模式的优缺点与适用环境</p> <p> </p> <p>23.6.1状态模式的优点</p> <p> </p> <p>23.6.2状态模式的缺点</p> <p> </p> <p>23.6.3状态模式的适用环境</p> <p> </p> <p>23.7本章小结</p> <p> </p> <p>23.8习题</p> <p> </p> <p>第24章策略模式</p> <p> </p> <p>24.1策略模式概述</p> <p> </p> <p>24.2策略模式的结构与实现</p> <p> </p> <p>24.2.1策略模式的结构</p> <p> </p> <p>24.2.2策略模式的实现</p> <p> </p> <p>24.3策略模式的应用实例</p> <p> </p> <p>24.4PetShop 4.0中的订单处理</p> <p> </p> <p>24.5策略模式的优缺点与适用环境</p> <p> </p> <p>24.5.1策略模式的优点</p> <p> </p> <p>24.5.2策略模式的缺点</p> <p> </p> <p>24.5.3策略模式的适用环境</p> <p> </p> <p>24.6本章小结</p> <p> </p> <p>24.7习题</p> <p> </p> <p>第25章模板方法模式</p> <p> </p> <p>25.1模板方法模式概述</p> <p> </p> <p>25.2模板方法模式的结构与实现</p> <p> </p> <p>25.2.1模板方法模式的结构</p> <p> </p> <p>25.2.2模板方法模式的实现</p> <p> </p> <p>25.3模板方法模式的应用实例</p> <p> </p> <p>25.4钩子方法的使用</p> <p> </p> <p>25.5模板方法模式的优缺点与适用环境</p> <p> </p> <p>25.5.1模板方法模式的优点</p> <p> </p> <p>25.5.2模板方法模式的缺点</p> <p> </p> <p>25.5.3模板方法模式的适用环境</p> <p> </p> <p>25.6本章小结</p> <p> </p> <p>25.7习题</p> <p> </p> <p>第26章访问者模式</p> <p> </p> <p>26.1访问者模式概述</p> <p> </p> <p>26.2访问者模式的结构与实现</p> <p> </p> <p>26.2.1访问者模式的结构</p> <p> </p> <p>26.2.2访问者模式的实现</p> <p> </p> <p>26.3访问者模式的应用实例</p> <p> </p> <p>26.4访问者模式与组合模式联用</p> <p> </p> <p>26.5访问者模式的优缺点与适用环境</p> <p> </p> <p>26.5.1访问者模式的优点</p> <p> </p> <p>26.5.2访问者模式的缺点</p> <p> </p> <p>26.5.3访问者模式的适用环境</p> <p> </p> <p>26.6本章小结</p> <p> </p> <p>26.7习题</p> <p> </p> <p>附录AUML类图</p> <p> </p> <p>A.1UML概述</p> <p> </p> <p>A.2类与类的UML表示</p> <p> </p> <p>A.3类之间的关系</p> <p> </p> <p>附录B设计模式模拟试题</p> <p> </p> <p>B.1模拟试题一</p> <p> </p> <p>B.2模拟试题二</p> <p> </p> <p>B.3模拟试题三</p> <p> </p> <p>参考文献</p>显示全部信息免费在线读第3章简单工厂模式
本章导学
创建型模式关注对象的创建过程,是一类*常见的设计模式,在软件开发中的应用非常广泛。创建型模式描述如何将对象的创建和使用分离,让用户在使用对象时无须关心对象的创建细节,从而降低系统的耦合度,让设计方案更易于修改和扩展。简单工厂模式是*简单的设计模式之一,它虽然不属于GoF的23种设计模式,但是应用也较为频繁,同时它也是学习其他创建型模式的基础。在简单工厂模式中,只需要记住一个简单的参数即可获得所需的对象实例,它提供专门的核心工厂类来负责对象的创建,实现对象的创建和使用分离。本章将对6种创建型模式进行简要的介绍,并通过实例来学习简单工厂模式,理解简单工厂模式的结构及特点,学习如何在实际软件项目开发中合理地使用简单工厂模式。
本章知识点
创建型模式。 简单工厂模式的定义。 简单工厂模式的结构。 简单工厂模式的实现。 简单工厂模式的应用。 简单工厂模式的优缺点。 简单工厂模式的适用环境。
3.1创建型模式软件系统在运行时,类将实例化成对象,并由这些对象协作完成各项业务功能。创建型模式(Creational Pattern)关注对象的创建过程,是一类*常用的设计模式,在软件开发中的应用非常广泛。创建型模式对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离,对用户隐藏了类的实例创建细节。创建型模式描述如何将对象的创建和使用分离,让用户在使用对象时无须关心对象的创建细节,从而降低系统的耦合度,让设计方案更易于修改和扩展。每一个创建型模式都通过采用不同的解决方案来回答3个问题: 创建什么(What),由谁创建(Who)和何时创建(When)。在GoF设计模式中,包含5种创建型模式,通常将一种非GoF设计模式——简单工厂模式作为学习其他工厂模式的基础,这6种设计模式的名称、定义、学习难度和使用频率如表31所示。
表31创建型模式一览表
模 式 名 称定义学 习 难 度使 用 频 率
简单工厂模式