【发布时间】:2014-03-04 01:58:52
【问题描述】:
我正在研究 C# 类接口,但我被困住了。
这是我目前的界面。
public abstract class AgnosticDevice
{
public abstract void SomeDeviceOperation();
}
public class vJoystick : AgnosticDevice, Joystick
{
public vJoystick( DirectInput di, Guid g){}
public override void SomeDeviceOperation()
{
/* Joystick operation */
}
}
public class vMouse : AgnosticDevice, Mouse
{
public vMouse( DirectInput di ){}
public override void SomeDeviceOperation()
{
/* Mouse operation */
}
}
public class vKeyboard : AgnosticDevice, Keyboard
{
public vKeyboard( DirectInput di , Guid g){}
public override void SomeDeviceOperation()
{
/* Keyboard operation */
}
}
public class DeviceFactory
{
public static AgnosticDevice Create( string type, DirectInput di, Guid g )
{
if ( type == "Mouse" )
{
return new vMouse( di);
}
if ( type == "Joystick" )
{
return new vJoystick( di, g);
}
if ( type == "Keyboard" )
{
return new vKeyboard( di, g);
}
return new vJoystick( di, g ); //default
}
}
请理解我仍然在这里学习,但我认为这接近我想要的。现在,操纵杆、鼠标和键盘是 Direct X 类。我想做到这一点,这样我就可以在我的代码中拥有一个名为“设备”的设备,而不管它是什么类型。每一类都有相似的成员。因此,与其创建 3 个类,我真正想要一个类并为每种类型提供 3 个接口。
现在我目前的问题是如何构建它。通常使用这些类中的任何一个,您都会做一个简单的新类 操纵杆设备 = 新操纵杆 (directInput, deviceGuid); 但就我而言,我需要做一个 device = (vJoystick)DeviceFactory.Create(type, directInput, deviceGuid); 但正如您可以清楚地看到的那样,设备从未真正制造出来。 vJoystick 从不返回新的操纵杆。这是我迷路了。
【问题讨论】: