目录
第1章设计模式概述
1.1设计模式的诞生与发展
1.1.1模式的诞生与定义
1.1.2软件模式概述
<p> </p> <p> </p> <p>目录</p> <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享元模式与String类</p> <p> </p> <p>14.7享元模式优/缺点与适用环境</p> <p> </p> <p>14.7.1享元模式优点</p> <p> </p> <p>14.7.2享元模式缺点</p> <p> </p> <p>14.7.3享元模式适用环境</p> <p> </p> <p>14.8本章小结</p> <p> </p> <p>14.9习题</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.6Java动态代理</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.5Java内置迭代器</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.4JDK对观察者模式的支持</p> <p> </p> <p>22.5观察者模式与Java事件处理</p> <p> </p> <p>22.6观察者模式与MVC</p> <p> </p> <p>22.7观察者模式优/缺点与适用环境</p> <p> </p> <p>22.7.1观察者模式优点</p> <p> </p> <p>22.7.2观察者模式缺点</p> <p> </p> <p>22.7.3观察者模式适用环境</p> <p> </p> <p>22.8本章小结</p> <p> </p> <p>22.9习题</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.4Java SE中的布局管理</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> <p> </p> <p> </p> <p> </p>显示全部信息前 言前言
设计模式和敏捷开发方法的创始人之一Erich Gamma曾说过:“设计和开发面向对象软件是非常困难的,而设计和开发可复用的面向对象软件则更加困难。”正因为如此,在软件开发过程中,有经验的设计者往往会重复使用一些他们在以前的设计工作中曾经用到的成功而又有效的解决方案,这些解决方案可以提高开发人员的开发效率与软件质量,并使得所设计的软件更加灵活,易于扩展,可复用性也更高。这些解决方案即设计模式,设计模式为实现可维护性复用而诞生,无论是面向对象编程的初学者还是有一定编程经验的程序员,都可以从设计模式的学习和使用中深入理解面向对象思想的精华,开发出可扩展性和可复用性俱佳的软件。<p>前言</p> <p>设计模式和敏捷开发方法的创始人之一Erich Gamma曾说过: “设计和开发面向对象软件是非常困难的,而设计和开发可复用的面向对象软件则更加困难。”正因为如此,在软件开发过程中,有经验的设计者往往会重复使用一些他们在以前的设计工作中曾经用到的成功而又有效的解决方案,这些解决方案可以提高开发人员的开发效率与软件质量,并使得所设计的软件更加灵活,易于扩展,可复用性也更高。这些解决方案即设计模式,设计模式为实现可维护性复用而诞生,无论是面向对象编程的初学者还是有一定编程经验的程序员,都可以从设计模式的学习和使用中深入理解面向对象思想的精华,开发出可扩展性和可复用性俱佳的软件。</p> <p>设计模式是前人经验的积累,它将让我们的软件变得更像一个艺术品,而不是一堆难以维护和重用的代码,它已经成功应用于众多软件设计中,是一个**的面向对象软件开发人员所必须掌握的知识和技能。本书编者在十多年的软件开发和计算机教育教学工作中积累了丰富的设计模式使用经验和教学经验,也深刻体会到学习设计模式的重要性。目前,国内外越来越多的高校在计算机及软件工程相关专业的本科生和研究生教学中开设了软件体系结构、面向对象分析与设计等课程,而设计模式是这些课程的核心组成部分,还有的学校将设计模式作为一门单独的课程来开设。此外,很多软件培训机构在软件工程师培训课程中也包含了设计模式相关内容,在各类计算机考试和企业招聘笔试中设计模式相关考题也占据了一定的比例。编者在过去几年中已完成多种设计模式教材的编写工作,本书将融合之前几种教材的优点,力求为广大师生提供一本内容全面、实用性强、通俗易懂的设计模式教材。</p> <p>本书的目的在于让读者通过大量应用实例和习题,理论联系实际,以便更快、更好地理解和掌握每一个设计模式。全书共26章,可分为4个部分:</p> <p>第1部分包含第1章和第2章,主要介绍与设计模式相关的一些基础知识,包括设计模式概述、7个常用的面向对象设计原则等内容,为后续设计模式的学习奠定基础; </p> <p>第2部分包含第3~8章,介绍6种常用的创建型设计模式,分别是简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式和单例模式; </p> <p>第3部分包含第9~15章,介绍7种常用的结构型设计模式,分别是适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式和代理模式; </p> <p>第4部分包含第16~26章,介绍11种常用的行为型设计模式,分别是职责链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式和访问者模式。</p> <p>本书结合大量项目应用实例对每一个设计模式都进行了细致的讲解。全书结构合理、条理清晰、内容丰富、讲解深入,且在每一章后面都配有大量的习题,很多习题也都基于项目实例,让读者在学完相关知识后能够更好地消化和巩固所学知识。此外,在附录中还提供了UML类图相关知识的介绍和3套设计模式模拟试题。</p> <p>本书在编写过程中参考了大量已有的设计模式书籍,集各家之所长,并进行了适当的整理和扩展,将一些原本深奥并难以理解的设计思想通过简单的应用实例来解析,让读者能够轻松掌握面向对象设计思想的精髓。本书以“实例驱动教学”为整体编写原则,每一个模式的学习都基于至少一个应用实例,结合应用实例来分析和讲解每一个设计模式,力求通过*通俗易懂的方式让读者学习和理解设计模式,让读者在真实项目实例的引导下学会选择和合理运用设计模式。在设计模式讲解部分,每一章的基本结构如下:</p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p>本书提供了完整的设计模式及应用实例的UML结构图(类图)和Java实现代码,所有类图均严格按照UML 2.X标准绘制,所有代码均在Eclipse Neon v4.6.0中通过测试且运行无误。</p> <p>本书提供了与内容配套的课程教学视频,并提供了完整的配套教学资料,包括所有实例的源代码、PPT格式的电子课件、课后习题和模拟试题答案等,任课教师可以通过发送邮件来获取相关教学资料。这些教学资料将形成一个完整的体系,为教学提供便利。</p> <p>本书既可作为高等院校计算机及软件相关专业本科生和研究生软件设计模式、软件体系结构、面向对象分析与设计等课程教材,也可作为各软件培训机构培训教材及全国计算机技术与软件专业技术资格(水平)考试辅导教材,还可作为软件架构师、软件工程师及广大软件爱好者的自学读物和参考用书。</p> <p>由于时间仓促,加之编者学识有限,虽经多次审阅与校稿,但书中不足和疏漏之处在所难免,恳请广大读者将意见和建议通过清华大学出版社反馈给我们,力求使本书精益求精,更趋**。</p> <p>编者</p> <p>2018年1月</p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p>显示全部信息免费在线读第3章简单工厂模式本章导学
创建型模式关注对象的创建过程,是一类*常见的设计模式,在软件开发中的应用非常广泛。创建型模式描述如何将对象的创建和使用分离,让用户在使用对象时无须关心对象的创建细节,从而降低系统的耦合度,让设计方案更易于修改和扩展。简单工厂模式是*简单的设计模式之一,它虽然不属于GoF的23种设计模式,但是应用也较为频繁,同时它是学习其他创建型模式的基础。在简单工厂模式中只需要记住一个简单的参数即可获得所需的对象实例,它提供专门的核心工厂类来负责对象的创建,实现对象创建和使用的分离。本章将对6种创建型模式进行简要的介绍,并通过实例来学习简单工厂模式,理解简单工厂模式的结构及特点,学会如何在实际软件项目开发中合理地使用简单工厂模式。
本章知识点
创建型模式 简单工厂模式的定义 简单工厂模式的结构 简单工厂模式的实现 简单工厂模式的应用 简单工厂模式的优/缺点 简单工厂模式的适用环境3.1创建型模式软件系统在运行时类将实例化成对象,并由这些对象来协作完成各项业务功能。创建型模式(Creational Pattern)关注对象的创建过程,是一类*常用的设计模式,在软件开发中的应用非常广泛。创建型模式对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离,对用户隐藏了类的实例的创建细节。创建型模式描述如何将对象的创建和使用分离,让用户在使用对象时无须关心对象的创建细节,从而降低系统的耦合度,让设计方案更易于修改和扩展。每一个创建型模式都通过采用不同的解决方案来回答3个问题,即创建什么(What)、由谁创建(Who)和何时创建(When)。在GoF设计模式中包含5种创建型模式,通常将一种非GoF设计模式——简单工厂模式作为学习其他工厂模式的基础,这6种设计模式的名称、定义、学习难度和使用频率如表31所示。
表31创建型模式一览表
模 式 名 称定义学习难度使用频率
简单工厂模式
(Simple Factory Pattern)定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类★★☆☆☆★★★☆☆工厂方法模式
(Factory Method Pattern)定义一个用于创建对象的接口,但是让子类决定将哪一个类实例化。工厂方法模式让一个类的实例化延迟到其子类★★☆☆☆★★★★★抽象工厂模式