我正在寻找有关实施课程的最佳实践的指南。
我的案子:
我想创建一个用于控制PTZ摄像机的类。该命令作为字节[]通过网络发送到摄像机。
有2个协议具有不同的命令和值,因此我将为每个协议创建一个类。
最好为每个命令创建一个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的最佳方法。
答案 0 :(得分:1)
您可以将抽象类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
答案 1 :(得分:1)
Template method设计模式可能适合您的实现。