C#中如何使用策略模式?到目前为止,这是我所拥有的:namespaceStrategy{interfaceIWeaponBehavior{voidUseWeapon();}}namespaceStrategy{classKnife:IWeaponBehavior{publicvoidUseWeapon(){Console.WriteLine("你用刀砍了敌人!SLASHSLASH!");}}}namespaceStrategy{classPan:IWeaponBehavior{publicvoidUseWeapon(){Console.WriteLine("Youusethepan!100%Adamantiumpower!BONG!");现在,如果我有一个Character.cs超类。这个超类如何实现武器行为,以便子类可以更具体。namespaceStrategy{classCharacter{publicIWeaponBehavior武器;公共角色(IWeaponBehaviorspecificWeapon){weapon=specificWeapon;}}}namespaceStrategy{classThief:Character{}}我该如何实现呢?我对实际代码需要什么感到很困惑。我知道这可能要求太多,但如果你们能编写实际代码以便我可以处理它,那对你们来说会很棒。我通过查看代码来学习。:P许多人可以从这个问题中受益。在类Character中使用依赖注入?publicclassCharacter{publicCharacter(IWeaponBehaviorweapon){this.weapon=weapon;}publicvoidAttack(){weapon.UseWeapon();}IWeaponBehavior武器;}publicclassPrincess:Character{publicPrincess():base(newPan()){}}publicclassThief:Character{publicThief():base(newKnife()){}}...Princessp=new公主();小偷t=新小偷();p.攻击();//平移t.Attack();//根据要求编辑刀具。有几种可能性。您真正要问的是,“特定角色应该如何知道使用哪种武器?”。你可以有一个角色工厂来创建正确类型的武器并将其注入角色(这听起来不对:)),或者让特定角色的构造函数负责创建武器。类字符{私人IWeaponBehavior_weapon;//构造函数publicCharacter(IWeaponBehaviorstrategy){this._weapon=strategy;}publicvoidWeaponInterface(){_weapon.UseWeapon();}}publicclasscharacter{IWeapon行为武器;}publicclassprincess:character{Weapon=newPan();}公共类小偷:角色{weapon=newknife();看看依赖注入,然后是控制反转。TekPub有一个关于这两个想法的很好的免费剧集,使用的样本与你的非常相似。这应该可以帮助您获得具体示例。?http://tekpub.com/view/concepts/1视频示例代码:classSamurai{IWeapon_weapon;publicSamurai(){_weapon=newSword();}publicSamurai(IWeaponweapon){_weapon=weapon;}publicvoidAttack(stringtarget){_weapon.Hit(target);上面是DI(使用IWeapon构造函数)。现在添加控制反转以获得更多控制。使用IOC容器,您将能够通过注入而不是类本身来控制IWeapon。该视频使用NInject作为IOC,并展示了如何消除IWeapon构造函数并获得对该类和所有需要使用IWeapon的类的控制,以便在一个地方/配置区域使用您想要的内容。视频示例:classWarriorModule:NinjectModule{publicoverridevoidLoad(){Bind().To();绑定到();上面的配置告诉NInject每当它遇到一个使用战士的IWarrior时,并且每当它鼓励IWeapon使用Sword时。视频继续解释这个小改变如何提高您的灵活性。它为Samuria添加了另一个使用远程武器等的模组......您可以根据需要/想要更改这些。这是一篇关于在C#中使用此模式的重点文章:http://www.lowendahl.net/showShout.aspx?id=115如果你的角色都有自己的特定武器,你实际上不需要使用策略模式。您可以使用简单的多态性。但无论如何,策略模式可能更清晰。你只需要初始化武器:publicclassCharacter{IWeapenBehaviorweapon;publicAttack(){weapon.UseWeapon();}}publicclassThief:Character{Thief(){weapon=newKnife();}}在控制字符中,可以调用Attack()方法。以上就是C#学习教程:如何在C#中使用策略模式?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
