纳闷,CSDN的“插入代码”有问题啊,不会自动加<br>标签
using System;
using System.Collections.Generic;
using System.Text;
namespace TheMiddleAges
{
/// <summary>
/// 策略模式之奇幻中世纪
/// </summary>
class Program
{
static void Main (string[] args)
{
Knight knight = new Knight();
Console.WriteLine(" 骑士 ");
knight.SetWeapon(new SwordBehavior());
knight.Fight();
Console.WriteLine(" VS ");
Troll troll = new Troll();
Console.WriteLine(" 巨魔 ");
troll.SetWeapon(new AxeBehavior());
troll.Fight();
Console.ReadLine();
}
}
/// <summary>
/// 人物
/// </summary>
class Character
{
WeaponBehavior weapon;
public void SetWeapon(WeaponBehavior w)
{
this.weapon = w;
}
public virtual void Fight()
{
weapon.userWeapon();
}
}
/// <summary>
/// 皇后
/// </summary>
class Queen : Character
{
public override void Fight()
{
base.Fight();
}
}
/// <summary>
/// 国王
/// </summary>
class King : Character
{
public override void Fight()
{
base.Fight();
}
}
/// <summary>
/// 巨魔
/// </summary>
class Troll : Character
{
public override void Fight()
{
base.Fight();
}
}
/// <summary>
/// 骑士
/// </summary>
class Knight : Character
{
public override void Fight()
{
base.Fight();
}
}
interface WeaponBehavior
{
void userWeapon();
}
class KnifeBehavior : WeaponBehavior
{
public void userWeapon()
{
Console.WriteLine("用匕首刺杀");
}
}
class BowAndArrowBehavior : WeaponBehavior
{
public void userWeapon()
{
Console.WriteLine("用弓箭射击");
}
}
class AxeBehavior : WeaponBehavior
{
public void userWeapon()
{
Console.WriteLine("用斧头劈");
}
}
class SwordBehavior : WeaponBehavior
{
public void userWeapon()
{
Console.WriteLine("用剑攻击");
}
}
}