我有一个班级,它返回三个属性。第一个属性依赖于某个参数,第二个属性依赖于第一个属性,第三个属性依赖于第二个属性。如何设计我的班级
实现这种类型的最佳方式是什么?对于这个类型有没有合适的设计模式?下面我粘贴了我的代码的两个版本,这两个版本都工作,我不知道哪个更好(或者我太复杂了)?
第一招:
class Initializer
{
private string lastCode;
private int lastPackage;
private int lastBox;
public Initializer(int machineNumber)
{
lastCode = GetLastCodeFromDatabase(machineNumber);
lastPackage = GetLastPackageByLastCode(lastCode);
lastBox = GetLastBoxByLastPackage(lastPackage);
}
public string LastCode
{
get { return lastCode; }
}
public int LastPackage
{
get { return lastPackage; }
}
public int LastBox
{
get { return lastBox; }
}
private string GetLastCodeFromDatabase(int machineNumber)
{
using (InitializerTableAdapter adapterGetLastCode = new InitializerTableAdapter())
{
return Convert.ToString(adapterGetLastCode.GetLastCodeByMachineNumber(machineNumber));
}
}
private int GetLastPackageByLastCode(string lastCode)
{
using (InitializerTableAdapter adapterGetLastPackage = new InitializerTableAdapter())
{
return Convert.ToInt32(adapterGetLastPackage.GetLastPackageByLastCode(lastCode));
}
}
private int GetLastBoxByLastPackage(int lastPackage)
{
using (InitializerTableAdapter adapterGetLastPackage = new InitializerTableAdapter())
{
return Convert.ToInt32(adapterGetLastPackage.GetLastBoxByPackageNumber(lastPackage));
}
}
}
二:
class Initializer
{
public static string LastCode(int machineNumber)
{
return GetLastCodeFromDatabase(machineNumber);
}
public static int LastPackage(string lastCode)
{
return GetLastPackageByLastCode(lastCode);
}
public static int LastBox(int lastPackage)
{
return GetLastBoxByLastPackage(lastPackage);
}
private static string GetLastCodeFromDatabase(int machineNumber)
{
using (InitializerTableAdapter adapterGetLastCode = new InitializerTableAdapter())
{
return Convert.ToString(adapterGetLastCode.GetLastCodeByMachineNumber(machineNumber));
}
}
private static int GetLastPackageByLastCode(string lastCode)
{
using (InitializerTableAdapter adapterGetLastPackage = new InitializerTableAdapter())
{
return Convert.ToInt32(adapterGetLastPackage.GetLastPackageByLastCode(lastCode));
}
}
private static int GetLastBoxByLastPackage(int lastPackage)
{
using (InitializerTableAdapter adapterGetLastPackage = new InitializerTableAdapter())
{
return Convert.ToInt32(adapterGetLastPackage.GetLastBoxByPackageNumber(lastPackage));
}
}
}
在这个类的帮助下,我在启动时设置了我的应用程序的GUI,所以它只运行一次,我需要一次获取所有属性。 – sventevit 2009-10-10 16:20:12