初学设计模式二(策略模式)

完成“Head First"的第一个练习,加上自己是奇幻爱好者,嘿嘿

纳闷,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("用剑攻击");

        }

    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值