csharp基础练习题:PatternCraft - 观众【难度:1级】:
的Visitor设计模式可被使用,例如,以确定攻击如何在星际游戏涉及不同量的损坏的一个单元.
该模式由委托责任不同类的.
当一个单位受到伤害它可以告诉游客如何处理本身.
你的任务
完成代码,这样,当一个Tank
攻击Marine
需要21
损伤,如果一个Tank
攻击Marauder
需要32
损坏.
海军最初的健康应设置为100
和掠夺者的健康应设置为125
.
你有3类:
- Marine
:有一个health
财产和’接受(游客)方法 -
Marauder:有一个
health财产和'接受(游客)
方法
- TankBullet
:访问者类.有visitLight(单位)
和visitArmored(单位)
方法
Resouces
- PatternCraft>观众
- SourceMaking>观众
- 维基百科>观众
PatternCraft系列
- 状态模式
- 策略模式
- ** 访问者模式**
- 修饰模式
- 适配器模式
- 命令模式
原来[PatternCraft系列(由约翰·林奎斯特)(https://www.youtube.com/playlist?list=PL8B19C3040F6381A2)是Youtube视频的集合,解释了一些设计模式以及如何使用它们(或者可能是)在星际争霸.
编程目标:
using System;
public interface IVisitor
{
void VisitLight(ILightUnit unit);
void VisitArmored(IArmoredUnit unit);
}
public interface ILightUnit
{
int Health { get; set; }
void Accept(IVisitor visitor);
}
{
int Health { get; set; }
void Accept(IVisitor visitor);
}
public class Marine : ILightUnit
测试样例:
using System;
using NUnit.Framework;
[TestFixture]
public class KataTestf
{
[Test]
public void _0_VisitLight()
{
ILightUnit light = new Marine();
light.Accept(bullet);
Assert.AreEqual(100 - 21, light.Health);
}
[Test]
最佳答案(多种解法):
更多关联题目:
免责申明
本博客所有编程题目及答案均收集自互联网,主要用于供网友学习参考,如有侵犯你的权益请联系管理员及时删除,谢谢
题目收集至https://www.codewars.com/
https://www.codewars.com/kata/patterncraft-visitor