我正在努力坚持良好的OO设计原则和设计模式等.因此,在开发我的C#应用程序时,我经常可以找到多种解决方案来解决设计和架构问题,我总是希望找到并实现更"规范"的解决方案,以期构建高度可维护和灵活的软件,并成为更好的OO程序员.
所以假设我有这两个抽象类:Character和Weapon.
abstract class Weapon
{
public string Name { get; set; }
}
abstract class Character
{
public Weapon weapon { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
派生类可能是Sword和Staff从Weapon,并Warrior与Mage从Character等(这是所有假设,而不是与我的实际的软件!).
每个Character都有一个Weapon,但是对于每一个实现,Character我都知道Weapon它的具体实现.例如,我知道(我想强制执行!)在运行时,每个实例Warrior都有一个Weapon类型Sword.我当然可以这样做:
class Sword : Weapon
{
public void Draw() { }
}
class Warrior : Character
{
public Warrior()
{
weapon = new …Run Code Online (Sandbox Code Playgroud) 我正在用C#构建类似CAD的应用程序.我正在使用SlimDX图形引擎,对于数字运算部分,我构建了最终依赖于System.Math类的自定义库.
现在,问题是SlimDX库使用由float数据类型组成的结构,而Math类包含几个只接受和返回双重对象的方法,例如:Math.Ceiling和Math.Sin.所以我发现自己不断地从浮动到双重来回投射我的数据.
这似乎不对.我不是那么担心演员阵容可能会对演奏造成的影响(也许我应该这么做?),但由于它们可能会出现数值不稳定性,这更加令人恐惧.
所以我只是想知道你通常如何管理这些情况,因为我猜这绝不是一个不常见的场景.