我在我的代码中使用单例类,主要负责与设备通信。
该类中的一个主要功能是ConnectToDevice(),库中还有另一个名为IsPhoneConnected()的方法。
所以基本上在调用任何其他方法之前,简单检查将是连接设备,如果它尚未连接。因此,无论是每个方法还是每次客户端应用程序调用我的库时,都有人负责编写以下代码
(!IsPhoneConnected())
{
ConnectToDevice()
return IsPhoneConnected() // If phone is not connected, try to connect, if still not connected then return false.
}
我不想一次又一次地写这个逻辑。我希望班级能够处理这个问题,而不必一遍又一遍地调用这段代码。
任何想法?
答案 0 :(得分:2)
如果任何给定的功能需要要连接的手机,它必须已经以某种方式与单身连接类进行交互。
在这种情况下,无论代码与单例中的电话进行交互,都可以调用ConnectToDevice()(如果它尚未连接)。
但是,如果你真的想每次执行一个方法,而不必每次都显式调用一组函数,那么你所说的是面向方面的编程< / strong>即可。
此范例不是C#的原生范例,但可以使用PostSharp等工具进行模拟。
有关如何使用PostSharp为代码添加方面的好教程,请查看this CodeProject文章。
你最终会得到类似的东西:
[PhoneConnectedAspect]
private void DoStuffWithPhone
{
// your code here
}
例如,使用该属性标记的任何方法都可以自动调用ConnectToDevice()方法。
答案 1 :(得分:1)
像Baldrick所说:这听起来有点像面向方面的编程。
然而,如果调用库中的任何方法都需要连接手机,我会将ConnectToDevice嵌入库本身。例如。只需将它嵌入到您的图书馆的每个需要手机连接的方法中。
AOP会更好,但这可以模仿它。