csharp进阶练习题:PatternCraft - 装饰【难度:2级】:
的装饰设计模式可用于,例如,在星际游戏管理升级.
该模式由与附加功能"增量"的基础类.
装饰器将收到的基类的实例,并用它来与你想补充说:"它的"新事物创建一个新的实例.
你的任务
完成代码,这样,当一个Marine
得到一个WeaponUpgrade
它增加了1
的伤害,如果它是一个然后ArmorUpgrade
通过1
增加护甲.
你有3类:
- Marine
:有一个damage
和armor
性质
- MarineWeaponUpgrade
和MarineArmorUpgrade
:升级适用于海洋.接受一个Marine
在构造并具有相同的属性Marine
Resouces
- PatternCraft>装饰
- SourceMaking>装饰
- 维基百科>装饰
PatternCraft系列
- 状态模式
- 策略模式
- 访问者模式
- ** 装饰模式**
- 适配器模式
- 命令模式
原来[PatternCraft系列(由约翰·林奎斯特)(https://www.youtube.com/playlist?list=PL8B19C3040F6381A2)是Youtube视频的集合,解释了一些设计模式以及如何使用它们(或者可能是)在星际争霸.
编程目标:
using System;
public interface IMarine
{
int Damage { get; set; }
int Armor { get; set; }
}
public class Marine : IMarine
{
public Marine(int damage, int armor)
{
Damage = damage;
Armor = armor;
}
public int Damage { get; set; }
public int Armor { get; set; }
}
public class MarineWeaponUpgrade : IMarine
{
private IMarine marine;
测试样例:
using System;
using NUnit.Framework;
[TestFixture]
public class KataTest
{
[Test]
public void _0_SingleUpgrade()
{
Assert.AreEqual(11, new MarineWeaponUpgrade(marine).Damage);
Assert.AreEqual(11, new MarineWeaponUpgrade(marine).Damage);
}
[Test]
public void _1_DoubleUpgrade()
{
最佳答案(多种解法):
更多关联题目:
免责申明
本博客所有编程题目及答案均收集自互联网,主要用于供网友学习参考,如有侵犯你的权益请联系管理员及时删除,谢谢
题目收集至https://www.codewars.com/
https://www.codewars.com/kata/patterncraft-decorator