请教什么是设计模式?以及忽然觉得编程似乎很考验逻辑能力。

SilentHunter460 2020-09-18 11:23:41
Java基础识别全部过了一遍,开始学写小项目。以坦克大战为例,我是这样做的:

1 坦克有尺寸、颜色、速度、移动、射击、越界、消失、响应按键,就把相关数据变量和方法写到这个类。
2 坦克分敌我,敌我有共同特征和不同特征。所以抽象坦克父类,两个敌我坦克子类。
3 子弹类,尺寸、颜色、速度、移动……
4 墙体类,尺寸、颜色、位置……。
5 获取坦克、子弹、爆炸和墙体的图片单独一个类。
6 窗口类继承Frame,坦克子弹都在这里画。
7 协调各个类的调用关系,哪些数据公有哪些私有,谁需要谁的参数,拿了参数做什么计算,哪些做成实例方法,哪些做静态方法。
以上应该是所谓的设计模式了吧?

1到6属于语法、思路、基础我觉得不难。但第7点很烧脑,把1到6串成严密的逻辑。感觉逻辑和编程没关系,似乎是天生的能力,而天生的东西就有个体差异,就像人有美丑。并且这种天生逻辑能力没办法训练。

以上还没加入文字类、声音类、网络类……否则逻辑更复杂,脑子不够烧。小小坦克大战就如此复杂,请问各位日常工作如何面对?是靠人多力量大还是怎么训练逻辑能力?多写代码可以夯实语法,但能提高逻辑能力吗?
...全文
4205 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
八爻老骥 2020-09-19
  • 打赏
  • 举报
回复
设计模式是代码的组织方式,说得高级一点就是规范,通俗点讲就是写代码的某种套路。工业生产有标准和流水线,软件开发也是一样的。不遵守设计模式也可以写出有用的程序,但有了设计模式更容易量化生产。比如早期开发游戏,你需要去Debug显卡,不同显卡的I/O方式还不一样,你要写许多适配代码,而现在你只要知道Opengl或DirectX 3D的接口就行了,这就是工厂与适配器模式应用的结果。
云上行者Gorge 2020-09-19
  • 打赏
  • 举报
回复
设计模式就是别人编程经验总结出来的一套解决特定问题的框架!之前看过一篇对设计模式很好的理解,就是可以把设计模式看成令狐冲的独孤九剑,前20年靠它能驰骋江湖,后期还是得继续修炼,达到无招胜有招的境界才出师了
SilentHunter460 2020-09-18
  • 打赏
  • 举报
回复
引用 4 楼 KeepSayingNo 的回复:
前面1-6都是实体,7其实是关系,关系也可以看作是一种特殊的实体,关系可以通过实体间的属性映射产生,也可以定义一种关系实体,然后构建两个实体间的关系
你把7解释为关系是一种特殊实体也行,但我现在就觉得这种关系很难写严密。因为电脑程序就是讲求严密的,但日常生活并不需要那么严密的思维。
qq_38549201 2020-09-18
  • 打赏
  • 举报
回复
以上 没体现设计模式 设计模式是用来解决通用需求问题的
例如有个需求 根据不同用户 不同地区 可以挑选不同坦克类型啥的
KeepSayingNo 2020-09-18
  • 打赏
  • 举报
回复
前面1-6都是实体,7其实是关系,关系也可以看作是一种特殊的实体,关系可以通过实体间的属性映射产生,也可以定义一种关系实体,然后构建两个实体间的关系
qybao 2020-09-18
  • 打赏
  • 举报
回复
说实话,从LZ的这些描述中,没看出什么设计模式,只是大概看到了LZ想怎么解决问题。就好像LZ要买房子,只看到LZ想要买多少平米,几房几厅,房子里有什么设备等粗略环节,至于房子要怎么布局,厅在哪个方位,厨房在哪个方位,窗开在哪里才可以即省空间又可以采光通风良好等细节看不到。所以谈不上什么设计模式。
换句话说,如果LZ说打算用个工厂类来专门负责造坦克,那还能看到工厂模式
如果LZ说打算用个类监视画面的坦克数,坦克死了(数量减少)就立刻通知工厂类造坦克,那还能看到监听器模式或观察者模式
等等

至于逻辑能力,多写代码也分情况的。如果是多写高效率,高性能的代码,以后遇到问题你自然而然就会考虑怎么优化,怎么设计才利于后期的扩展。如果只是做一些重复性的crud以及拷贝粘贴的代码编写,那么写再多代码也没什么提高,顶多是个熟练工种。所以你要想训练自己,除了自己要多写高效的代码,还要多看别人写的高效的代码,多借鉴别人的想法,吸取别人的精华。

maradona1984 2020-09-18
  • 打赏
  • 举报
回复
你所谓的复杂只是你没开始做的时候感觉复杂,但实际上事物和事物之间的联系并没有那么多,任何复杂的问题都可以分而治之,分割成简单的问题就没那么复杂了.
游北亮 2020-09-18
  • 打赏
  • 举报
回复
要提炼抽象能力,需求分析拆解能力等等。 首先是学习前人的总结,那些设计模式,和对应的一些场景举例。 实践时,做任何一个需求,都要做需求分析、设计,出对应的设计文档,包含用例图、时序图、、状态图、活动图、部署图等等。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧