第9月第6天 push pop动画 生成器模式(BUILDER)
1.
https://github.com/MichaelHuyp/QQNews
2.生成器模式(BUILDER)
class MazeBuilder
{
public:
virtual void BuildMaze() {}
virtual void BuildRoom(int room) {}
virtual void BuildDoor(int roomFrom, int roomTo) {} virtual Maze* GetMaze() { return ;}
protected:
MazeBuilder();
} class StandardMazeBuilder : public MazeBuilder { public: StandardMazeBuilder(); /* */ virtual void BuildMaze(); virtual void BuildRoom(int); virtual void BuildDoor(int, int); /* */ virtual Maze* GetMaze(); private: Direction CommonWall(Room*, Room*); Maze* _currentMaze; };//StandardMazeBuilder是ConcreteBuilder,提供部件的具体构造代码 Maze* MazeGame::CreateMaze (MazeBuilder& builder) { builder.BuildMaze(); builder.BuildRoom(); builder.BuildRoom(); builder.BuildDoor(, ); return builder.GetMaze(); }//CreateMaze是导向器,调用生成器的抽象接口完成产品的构造过程。 //下面代码描述产品的构造过程 Maze* maze;//最终的产品 MazeGame game;//Director,导航者 StandardMazeBuilder builder;//ConcreteBuilder,实际的构造类 game.CreateMaze(builder);//开始装配 maze = builder.GetMaze();//获取装配后的产品
http://blog.csdn.net/zs634134578/article/details/17853433
StandardMazeBuilder::StandardMazeBuilder()
: m_currentMaze()
{
} void StandardMazeBuilder::BuildMaze()
{
m_currentMaze = new Maze();
} void StandardMazeBuilder::BuildRoom(int roomNo)
{
if (m_currentMaze->RoomNo(roomNo) == NULL)
{
Room *room = new Room(roomNo); room->SetSide(Room::East, new Wall());
room->SetSide(Room::South, new Wall());
room->SetSide(Room::West, new Wall());
room->SetSide(Room::North, new Wall()); m_currentMaze->AddRoom(room);
}
} void StandardMazeBuilder::BuildDoor(int roomFrom, int roomTo)
{
Room *r1 = m_currentMaze->RoomNo(roomFrom);
Room *r2 = m_currentMaze->RoomNo(roomTo); Door *door = new Door(r1, r2); r1->SetSide(CommononWall(r1, r2), door);
r2->SetSide(CommononWall(r2, r1), door);
} Room::Direction StandardMazeBuilder::CommononWall(Room *from, Room *to)
{
}
https://github.com/e5MaxSpace/DesignPatterns
第9月第6天 push pop动画 生成器模式(BUILDER)的更多相关文章
- 自定义UINavigationController push和pop动画
http://segmentfault.com/q/1010000000143983 默认的UINavigationController push和pop的默认动画都是左右滑动推出,我的应用要求这种界 ...
- js 的数组怎么push一个对象. Js数组的操作push,pop,shift,unshift JavaScrip
push()函数用于向当前数组的添加一个或多个元素,并返回新的数组长度.新的元素将会依次添加到数组的末尾. 该函数属于Array对象,所有主流浏览器均支持该函数. 语法 array.push( ite ...
- 数据结构---设计一个栈,push, pop, min 时间复杂度都是 O(1)
普通的栈,push, pop 操作的复杂度是 O(1), 但是如果要找出其中的最小值,则需要 O(N)的时间. 题目要求 min 复杂度也是 O(1), 做法便是 空间换时间,每一步栈的最小值都用一个 ...
- js中常用数组方法concat join push pop slice splice shift
javascript给我们很多常用的 数组方法,极大方便了我们做程序.下面我们来介绍下常用的集中数组方法. 比如 concat() join() push() pop() unshift() shif ...
- 解决 iOS View Controller Push/Pop 时的黑影
那么如何解决这个问题呢? 实际上很简单,如果这个 ViewController 是在 TabBarViewController 的 NavigationController 上 Push/Pop 的, ...
- 汇编 push ,pop指令
知识点: PUSH POP CALL堆栈平衡 RETN指令 一.PUSH入栈指令 (压栈指令): 格式: PUSH 操作数 //sub esp,4 ;mov [esp],EBP 操作数 ...
- js中push(),pop(),unshift(),shift()的用法
js中push(),pop(),unshift(),shift()的用法小结 1.push().pop()和unshift().shift() 这两组同为对数组的操作,并且会改变数组的本身的长度及 ...
- js push(),pop(),shift(),unshift()
以前没有太在意这些,这几天看<Javascript 设计模式与开发实践>(不得不说这是一本好书) 发现总是会用到这几个函数,可是有什么区别呢?? 简单来说是两套东西(数据结构时老师详细的讲 ...
- iOS7 push/pop转场动画
前言 iOS 7之后,苹果提供了自定义转场动画的API,我们可以自己去定义任意动画效果.本篇为笔者学习push.pop自定义转场效果的笔记,如何有任何不正确或者有指导意见的,请在评论中留下您的宝贵意见 ...
随机推荐
- 红黑树的删除详解与思路分析——不同于教科书上的算法(dart语言实现)
对于红黑树的删除,看了数据结构的书,也看了很多网上的讲解和实现,但都不满意.很多讲解都是囫囵吞枣,知其然,不知其所以然,讲的晦涩难懂. 红黑树是平衡二叉树的一种,其删除算法是比较复杂的,因为删除后还要 ...
- eclipse实现热部署和热启动
不用每次修改一个class文件就要重启tomcat这么麻烦: http://blog.csdn.net/fuzhongyu2/article/details/52073050
- 20181204-2 Final发布
此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2476 小组介绍 组长:付佳 组员:张俊余 李文涛 孙赛佳 田良 于洋 段 ...
- 四则运算ver.mk2
package size; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JMenuBar; im ...
- 英语学习APP
第一部分 调研, 评测 下载并使用,描述最简单直观的个人第一次上手体验. 界面高大上,看起来很美观,是个不错的英语学习软件.我很喜欢. 2.按照<构建之法>13.1节描述的 bug 定义, ...
- 第四次WBS
分解原则 1.将主体目标逐步细化分解,最底层的日常活动可直接分派到个人去完成: 2.每个任务原则上要求分解到不能再细分为止: 3.日常活动要对应到人.时间和资金投入. 二.任务分解的方法 1.采用树状 ...
- Final发布点评
1. 约跑App——nice!:为改进演示效果,本组使用摄像头实时采集投影的方式展示其作品,是一种演示的创新.本组重点放在了修改上次来着其他组发现的bug,不过新功能上好像没有加入多少,可能是保证软 ...
- js 判断是否选中
js的方法 window.onload = function(){ var oDiv = document.getElementById('div1'); alert(oDiv.checked) } ...
- MyBatis分步查询的延迟加载
延迟加载的概念只存在于分步查询时: 延迟加载的本质是为第一步查询返回的Java Bean创建了一个代理对象: 延迟加载的全局设置有两个: lazyLoadingEnabled,作用为设置select语 ...
- Hbase之IP变更后无法启动问题解决
# 修改hbase IP配置文件地址:/opt/hbase-1.1.13/conf/hbase-site.xml <property> <name>hbase.zookeepe ...