在类外部实现类型或在类内部创建实例的OOP设计
本文关键字:实例 OOP 设计 创建 外部 实现 类型 内部 | 更新日期: 2023-09-27 18:17:19
当从SQL Server填充数据时,到达BObj_Sf
's Sn
的最佳方法是什么?
这个
public class BObj_Sub
{
BObj_Sf _Sn = new BObj_Sf();
public BObj_Sf Sn
{
get { return _Sn; }
set { _Sn = value; }
}
}
或者这是ooP的一个更好的方面?
BObj_Sub sub = new BObj_Sub
{
Sf = new BObj_Sf { SAd = SAd },
};
我相信你的问题更多的是与良好的编程实践和there could be multiple solution or design technique for this question
有关。
我将创建这样的类-
// create interface for providing {x} features
public interface IBObj_Sf
{
...
...
}
// create class which provides {x} features of IBObj_Sf interface
public class BObj_Sf : IBObj_Sf
{
...
...
}
// now implement BObj_Sub class like -
public class BObj_Sub
{
// mark as readonly depending it is modifiable or
// not withing BObj_Sub's lifecycle
private readonly IBObj_Sf _Sn;
public BObj_Sub(IBObj_Sf sn)
{
_Sn = sn;
}
public BObj_Sf Sn
{
get { return _Sn; }
private set { _Sn = value; }
}
}
用法:
BObj_Sf sf = new BObj_Sf();
BObj_Sub sub = new BObj_Sub(sf);
优点:明天如果您想将BObj_Sf
更改为一些新的类BObj_Xf
,那么只有以下几行将随着您的新类一起更改。-
BObj_Xf xf = new BObj_Xf();
BObj_Sub sub = new BObj_Sub(xf);
BObj_Sub
中的代码保持不变。