我正在寻找关于实施我的课程的最佳实践的指南。 我的情况: 我想创建一个用于控制PTZ摄像机的类。该命令通过网络作为byte []发送到摄像机。有两个协议具有不同的命令和值,因此我将为每个协议创建一个类。
最好为每个命令创建一个byte []并在类中列出它们,并根据用户输入更改值。例如:
议定书A.
byte[] up = { 0xff, 0x12, 0x03, 0x04, .... }
byte[] down = { 0xff, 0x1a, 0x03, 0x05, .... }
byte[] left = { 0xff, 0x10, 0x03, 0x02, .... }
byte[] right ={ 0xff, 0x02, 0x03, 0x06, .... }
void setUpValue(byte speed)
{
up[3]=speed;
}
或者我是否根据用户请求动态创建byte []?
我正在为2个PTZ控制协议创建一个库,我想为每个协议创建一个类。例如,ProcotolAControl和ProcotolBControl。
我想知道使代码更模块化和OOP的最佳方法。
您可以创建抽象类ProcotolControlBase
作为那两个类契约,让ProcotolAControl
和ProcotolBControl
类继承ProcotolControlBase
。
ProcotolAControl
和ProcotolBControl
在自我阶级中制定了自己的细节逻辑。ProcotolAControl
和ProcotolBControl
构造函数上设置Procotol默认数据。看起来像这样。
public abstract class ProcotolControlBase {
protected byte[] _up;
protected byte[] _down;
protected byte[] _left;
protected byte[] _right;
public void SetUpValue(int index,byte speed)
{
_up[index] = speed;
}
public void SetDownValue(int index, byte speed)
{
_down[index] = speed;
}
}
public class ProcotolAControl : ProcotolControlBase
{
public ProcotolAControl() {
_up = new byte[] { 0xff, 0x12, 0x03, 0x04 };
_down = new byte[] { 0xff, 0x1a, 0x03, 0x05 };
_left = new byte[] { 0xff, 0x10, 0x03, 0x02 };
_right = new byte[] { 0xff, 0x02, 0x03, 0x06 };
}
}
public class ProcotolBControl : ProcotolControlBase {
public ProcotolBControl()
{
_up = new byte[] { 0xff, 0x12, 0x03, 0x04 };
_down = new byte[] { 0xff, 0x1a, 0x03, 0x05 };
_left = new byte[] { 0xff, 0x10, 0x03, 0x02 };
_right = new byte[] { 0xff, 0x02, 0x03, 0x06 };
}
}
当你使用它时
ProcotolControlBase procotol = new ProcotolAControl(); //use ProcotolAControl
ProcotolControlBase procotol1 = new ProcotolBControl(); //use ProcotolBControl
qazxsw poi设计模式可能适合您的实施。