2013年10月1日

摘要: 前面介绍了一个创建迷宫的实现,首先介绍了一种最直接的实现,creator-也即MazeGame的CreateMaze()方法通过直接引用具体对象类来创建一个迷宫,这种通过硬编码的方式来创建对象存在可扩展性的问题,当创建其他类型的迷宫时需要修改CreateMaze()方法。 为解决CreateMaze()方法硬编码具体对象类的问题,抽象工厂模式和生成器模式抽象了创建对象的过程,将创建对象的过程分装了MazeFactory和MazeBuilder,MazeFactory仅仅封装了具体对象的创建而MazeBuilder不仅封装了具体对象的创建,并且封装了组装对象的细节。同时抽象工厂模式和生成器... 阅读全文
posted @ 2013-10-01 17:16 黑猫警长V5 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 单件模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 单件模式实现:1.类方法Instance()提供访问实例的全局访问点。2.类构造函数声明为protected,防止直接实例化类的对象。将抽象工厂实现为单件的一种简单方式,客户通过Instance接口获取唯一实例:/* 实现为单件的抽象工厂类 */ class MazeFactory {public: static MazeFactory* Instance(); //existing interface goes hereprotected: MazeFactory();/* 构造方法为保护,避... 阅读全文
posted @ 2013-10-01 17:10 黑猫警长V5 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 原型:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 原型实现:1.用于创建对象的具体类必须实现clone()操作,用于对象克隆自己以生成新的对象。下面通过原型来实现一个抽象工厂MazePrototypeFactory,creator使用原型工厂来创建对象。派生MazePrototypeFactory原型工厂:/* 原型工厂 */class MazePrototypeFactory:public MazeFactory {public: MazePrototypeFactory(Maze*, Wall*, Room*, Door*); virtual... 阅读全文
posted @ 2013-10-01 16:12 黑猫警长V5 阅读(356) 评论(0) 推荐(0) 编辑

导航