public class CTest
{
}/// <summary>
/// ATest是单例模式
/// </summary>
public class ATest
{
CTest cTest = null;
private ATest()
{
//
}
public static ATest GetInstance()
{
return new ATest();
}
public void OP1()
{
//对C的操作1
}
public void OP2()
{
//对C的操作2
}
public void OP3()
{
//对C的操作3
}
public void OP4()
{
//对C的操作4
}
public void OP5()
{
//对C的操作5
}
}public class BTest
{
private ATest aTest = ATest.GetInstance();
//假设里面有数据
private List<CTest> cList = new List<CTest>();
public BTest()
{
}
public void OP()
{
foreach (CTest cTest in cList)
{
//因为在 OP*里对C进行操作
//问题: 我要把cTest 给传到 ATest 中的cTest
aTest.OP1();
aTest.OP2();
aTest.OP3();
aTest.OP4();
aTest.OP5();
}
}
}问题: 我要把cTest 给传到 ATest 中的cTest
解决方案有如下:
1. 可以单独有个函数 完成这个功能
2. 把cTest 设置成属性
3. 把cTest 当作参数给OP*(这个肯定不行的,函数太多,太麻烦了)我想问的问题是否有其他的方法。(不要把ATest Class改成非单例模式)希望有人赐教。感觉有点吹毛求疵了。。有没有一种模式可以完成这样的功能?
因为BTest的子类(很多个) 需要用到 这样的结构:
foreach (CTest cTest in cList)
{
//因为在 OP*里对C进行操作(一堆函数中的1-2个)
//问题: 我要把cTest 给传到 ATest 中的cTest
aTest.OP1();
aTest.OP2();
aTest.OP3();
aTest.OP4();
aTest.OP5();
}
如果用上述前2种方法去实现的话, 总感觉有点别扭,所以才有这种吹毛求疵的 想法的 了
这样不是很简单吗?
我们lead 就是认为 设置成属性 或者 用个函数完成感觉别扭,要想个其他的的办法去解决它。
希望有人给我提供下其他的意见 在此先谢谢了。