设计模式 创建型模式实践



//---------------------------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








posted @ 2015-04-11 23:16  boydfd  阅读(198)  评论(0编辑  收藏  举报