
我的练手项目们
记录用于练手学习的项目过程
phs999
这个作者很懒,什么都没留下…
展开
-
6.使用装饰者模式扩展坦克代码-设计模式之坦克大战
复习总结装饰者模式的实现原理以及与继承的区别,同时介绍在坦克大战代码中应用 中出现的问题,相应设计模式要在特定场景下发挥作用,不能为了设计模式而设计模式。 装饰者模式的核心就是将待修饰类对象传参到装饰类,然后得到一个新的、更加强大、可以支持更多功能的修饰后的类对象。 ...原创 2020-08-08 11:16:07 · 465 阅读 · 0 评论 -
5.使用中介者模式和责任链模式优化坦克大战代码-设计模式之坦克大战
复习总结中介者模式和责任链模式,并且介绍在坦克大战中的应用场景及优化逻辑,最终实现游戏对象之间的解耦和进一步满足开闭原则减少对原来代码的改动。原创 2020-07-29 23:18:14 · 355 阅读 · 0 评论 -
4.使用facade外观模式优化坦克大战代码-设计模式之坦克大战
使用facade外观模式简化TankFrame类,将炮弹类、坦克类、爆炸类之间的逻辑关系、碰撞检测等进行封装,封装为GameModelFacade类。原创 2020-07-19 13:03:27 · 286 阅读 · 0 评论 -
2.应用策略模式和单例模式-设计模式之坦克大战
前面对策略模式和单例模式都进行了理论化的总结,下面是这两种设计模式在坦克大战中的使用。 在应用这两种设计模式之前,代码在这里: https://github.com/phs999/DesignPatterns/tree/e6d14348afa089398fac14dddc5f77315b1e4bb2 其中Tank类中fire()方法,控制了坦克发射炮弹的位置和方式。但这样每个Tank对象的fire()方法都是一样的,见下面的Tank类。但具体程序中可能有不同的需求。比如,敌方坦克没有人控制的话,需要自原创 2020-06-23 00:26:32 · 489 阅读 · 0 评论 -
1.基础完成版本-设计模式之坦克大战
1、版本地址 https://github.com/phs999/DesignPatterns/tree/9af503c47d25dfea6a0a848438725afbc3e4a424 2、实现效果 (1)敌方坦克随机移动; (2)敌方坦克随机发射炮弹; (3)坦克运动范围边界控制; (4)我方子弹遇到敌方坦克后,子弹与坦克消失; 3、评价 功能基本实现,但是代码之前耦合较多,互相调用互相依赖。 4、关键代码 package phs999.tank; import java原创 2020-06-07 21:40:14 · 361 阅读 · 0 评论 -
0.开篇-设计模式学习之坦克大战
1、目的 通过一个项目的逐步迭代,来进行设计模式的思想学习。 2、参考 [1] 马士兵-坦克大战 [2] 慕课网-java设计模式精讲 3、我的代码地址 https://github.com/phs999/DesignPatterns 4、关键点与关系图 首先实现了以下几个关键点: (1)实现一个可关闭窗口; (2)实现方框坦克按方向键移动,不按方向键静止; (3)实现子弹类发射子弹。 各类之间的关系图如下: 5、主要代码 package phs999.tank; ...原创 2020-05-31 14:03:13 · 366 阅读 · 0 评论