Dav*_*ave 3 c# oop data-structures
我有一台我将要连接的设备,该连接可以通过TCP/IP或串行连接.我正在编写一个模拟配置数据的类,其中一个配置选项是有关该连接的信息.
串行连接具有CommPort,BaudRate,Parity等配置设置.TCP/IP连接将具有主机和端口.
所以很明显我将要有SerialConnectionInfo和TcpConnectionInfo类.但这些类是Equipment类的成员.
我似乎应该有一些主ConnectionInfo类或接口,但问题是虽然这两个类在概念上相似,但它们不共享任何公共字段.所以像下面这样的东西似乎没有任何意义:
interface IConnectionInfo {
}
class SerialConnectionInfo : IConnectionInfo {
string CommPort;
}
class TcpConnectionInfo : IConnectionInfo {
string Host;
}
class Equipment {
IConnectionInfo Connection;
}
Run Code Online (Sandbox Code Playgroud)
我可以做类似的事情,但是在某些时候我肯定要检查Connection是哪个类,并将其转换为正确的类.一切都闻错了.有人有什么想法吗?
您可以使用您对实现不感兴趣的界面.所以接口应该提供一个Connect()由类实现的方法.
然后,类包含该特定连接类型所需的属性.像这样TcpConnection:
public interface IConnection
{
void Connect();
}
public class TcpConnection : IConnection
{
public string Host { get; private set; }
public int Port { get; private set; }
private Socket _socket;
public TcpConnection(string host, int port)
{
Host = host;
Port = port;
}
public void Connect()
{
_socket = new Socket(...);
}
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以实例化它:
IConnection connectionInfo = new TcpConnection("example.com", "1337");
Run Code Online (Sandbox Code Playgroud)
并将其作为接口传递,调用Connect()它进行连接.
你的问题没有包含关于类,接口或属性究竟应该做什么的足够信息,所以我无法真正模拟我的答案.此外,这看起来更像http://programmers.stackexchange.com,因为它是关于设计而不是实现.
| 归档时间: |
|
| 查看次数: |
87 次 |
| 最近记录: |