设计模式 创建型模式实践
//---------------------------15/04/10----------------------------
/*创建型模式总结:
1:抽象工厂和工厂方法的对比:
抽象工厂: 工厂方法:
1>通过对象组合创建抽象产品。 通过类继承创建抽象产品。
2>创建多系列产品。 创建一种产品。
3>必须修改父类的接口菜能支持 子类化创建者必须重载工厂
新的产品。 方法以创建新产品
2:生成器模式和抽象工厂的对比:
抽象工厂: 生成器模式:
1>构建简单或复杂对象。 构建复杂对象。
2>以单一步骤构建对象。 以多个步骤构建对象。
3>以单一方式构建对象。 以多种方式构建对象。
4>立刻返回产品。 在构建过程的最后一步返回产品。
5>强调一套产品。 专注一个特定产品。
*/
/*下面开始创建一个迷宫吧,用以检验创建型模式的学习程度。
1:需求:
1>游戏:控制创建迷宫,人物。
2>迷宫:各种类型的迷宫。
3>人物:主角和敌人。
2:分析:
1>人物:
人物是一个复杂的对象,有多个部件,所以有两个考虑:
1)使用生成器模式创建:
每个部件只需要给定相应的值就能生存。
2)使用原型模式创建:
每个人物都是一样的,只需要改变数值就行。
对比以上两种模式,考虑到其适用性,感觉还是生成器模式比较适合。
选用生成器模式。
2>迷宫:
迷宫是由大量的单元(一个个房间)组成的,房间又包含很多东西:
1)门:房间的4面都有可能是门。
2)墙:房间的4面有3面可能是墙。
3)人:房间中可能存在主角,敌人等。
4)陷阱:炸弹,魔法什么的。
房间:
考虑到房间中间包含什么都是运行时刻决定的,然后一个房间是由多个东西组成的,
所以采用原型模式。
门和墙是差不多的类型:
1)门和墙的两边都是连接着房间。
2)门和墙都可以有不同的属性(木门,木墙之类)(这个貌似涉及了之后的设计模式,貌似是装饰模式)
所以先采用抽象工厂模式,可以创造出一系列的产品(木门和木墙算一个系列)。
人:
上面说过了。
陷阱:
陷阱就有各种类型的陷阱,就先简单地使用工厂方法。
3>游戏:
游戏嘛就是单例模式了。
3:到此为止所有模式都用上了!开始实践:
*/
/*
经过两天的努力,终于还是搞定了。
目前实现的功能有:
1>人:通过生成器模式创建。
可以有属性,有装备。
2>房间:通过原型模式创建。
里面可以设置守卫,可以设置门或墙
3>Site(门或墙):通过抽象工厂创建。同时在编程过程中发现,这东西还是加上原型模式的好
这是由于房间时原型模式的,所以复制的时候要知道Site是门还是墙,使用原型模式就不用考虑这些了。
可以进入门,就到了另一个房间,进入墙返回失败。
4>Game:使用单例模式。其实各种工厂使用的都是单例模式。
*/
代码地址:http://download.csdn.net/detail/boydfd/8585669