java - 设计模式分配

标签 java design-patterns

是否有地方可以找到用于实施设计模式的多个分配(以及解决方案?)

我的想法是以适当的方式进行操作。我想用Java实现它们。目前,我只需要基本的设计模式,而不是J2EE模式。

我实际上正在寻找使用大多数设计模式进行开发的完整应用程序。 (所有设计模式在一次分配中)

最佳答案

给我建一个农场!!

您要作业吗?我给你一个截止日期为2月22日,星期二,太平洋时间下午9:00。您将为我建立一个蚂蚁场,并且将使用一些常见的设计模式来完成它。

这并不是每一种设计模式,因为那只是愚蠢的。但是,它的作用确实足够,使得交互将很复杂,同时又足够简单以快速实现。完成此操作后,我们可以考虑为我们的蚂蚁农场添加更多功能!

我将根据需要添加需求(添加了哪些修订版本)。

要求如下:

功能要求:


草地上可以有许多蚂蚁农场。对于此任务,只能允许一个草地发生。
草地应该能够产生逻辑上无限数量的蚂蚁。
一个antfarm应该由一个antfarm房间网络组成。
一个蚂蚁场应该有空间产卵更多的蚂蚁。
蚂蚁应该能够与其他蚂蚁战斗。当他们这样做时,战斗的失败者应该死掉(它的蚁群不再能指挥它了),战斗的胜利者应该获得蚂蚁的属性。
一个蚂蚁场应该只有一种蚂蚁。每个物种都应该对它们有某种奖励。也许他们更快地收获食物。也许他们有更高的机会杀死其他蚂蚁。
如果一个蚁群的成员杀死另一个殖民地的女王,那么杀手的女王应该控制死去的女王的蚂蚁种群。现在所有蚂蚁都应该同时具有两种蚂蚁的属性。 (因此,如果一个物种很强壮,而另一个物种很高效,那么现在这两个种群将合并为一个既强大又高效的种群。)
蚂蚁应该经常休息。当他们这样做时,他们应该食用食物。根据房间数量(每个休息室X数量),应限制一个蚂蚁场一次可以容纳多少只蚂蚁的能力。
当a虫结束时,有1个或更少的活动菌落/女王时,模拟应结束。这意味着您应该在第一次滴答之前产卵至少2个菌落。
Antfarm中的房间应该需要一定数量(可能很大)的工人来建造。因此,如果要花1个工人100个滴答声来挖一个房间,那么要花50个工人2个滴答声,等等。但是建造一个房间应该有相当大的成本,因为房间决定了您可以休息多少。 (此要求已在规范修订版1中添加。)


技术要求:(设计模式以粗体显示)


草地课程必须是单身人士。
应该通过将房间建造成一个蚂蚁来建造一个蚂蚁。 (构建器模式)
无人机和勇士只能由AntRooms使用工厂模式创建,而皇后区只能由Meadows通过工厂模式创建,以用于新的殖民地。
使用装饰器模式来跟踪蚂蚁的属性。
应该对Antfarms进行模板化(使用Java泛型)以容纳任何类型的ant,并且antfarm应该在运行时指定其持有哪种类型的ant。
模拟应基于刻度。 (调解器模式)每个滴答声,每个蚂蚁(按随机顺序)都应根据其周围环境执行某些操作。无人机应该寻找食物,战士应该寻找敌人(如果饿了就回去寻找食物),皇后应该产卵。


接口要求:

蚂蚁场的接口应该是带有以下命令的命令行界面:


spawn X Y T-应在物种T的X,Y位置创建一个新的菌落。输出应提供该菌落的标识符,以便稍后对其进行控制。
示例spawn 14 -32 Killer在位置x14 y-32处创建“杀手”蚂蚁菌落。
give I R A-应赋予I(在创建时)资源R标识的殖民地A。
示例give 1 food 50给菌落1 50食物。
示例give 3 warrior 10给出了殖民地3的10个在殖民地3的基地产生的战士。
tick [T]-应该执行T滴答操作。为方便起见,不指定T,只需勾选一次即可。
示例tick 10
示例tick
summary I-应该给出菌落I的摘要。摘要给出有关该菌落的信息。
示例summary 1可能会给出以下输出:


输出:

    Species: Killer
    Workers: 14
    Warriors: 10
    Ant Kills: 18
    Colony kills: 2 (2:Pansy 4:Gatherer)
    Ticks alive: 143
    Status: Alive



示例summary 2可能会给出以下输出:


输出:

    Species: Pansy
    Workers: 4
    Warriors: 0
    Ant Kills: 2
    Colony kills: 0
    Ticks Alive: 25
    Status: Killed by 1:Killer


如果遇到任何困难,请发表评论。我将尝试为您提供一些提示,例如空白类,方法标头,或者只是有关如何使这些设计模式相互交互的一般想法。

祝好运并玩得开心点!!

关于java - 设计模式分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5044390/

相关文章:

java - 在 ffmpeg for android studio 中的视频上叠加图像

java - Android 6.0 Manifest.xml 中的 <uses-permission> 与 <permission>

java - 在 swing 中居中组件并调整 JFrame 大小

haskell - 为什么有一个单独的类型模块?

c++ - 在 C++ 中寻找 Reactor 模式示例源代码

java - 尝试比较现有Java项目从Ant构建到Maven或Gradle的迁移?

java - 我应该如何处理 Java MUD 中的持久性? OptimisticLockException 处理

ViewController 的快速可重用性

android - SQLite 数据库中的大字符串对象

java - 如何分离业务逻辑和指标日志?