我是设计模式的新手。我试图在我当前的应用程序中使用工厂方法设计模式。在应用程序中,我有两组(即group1和group2),每组将有不同的方法。将应用程序角色用作类并从产品继承(即group2)是一种好的做法。任何人都可以告诉我下面的示例代码是对还是错。
class Creator
{
static void Main(string[] args)
{
if (args[0] == "GroupHead")
{
IGroup2 gh = new GroupHead();
}
else if (args[0] == "ProjectIncharge")
{
IGroup2 gh = new ProjectIncharge();
}
}
}
interface IGroup1
{
List<Employee> GetEmployees();
}
interface IGroup2
{
List<Projects> GetProjects();
}
public class Group : IGroup1
{
public List<Employee> GetEmployees()
{
//Code here
}
}
public class GroupHead : IGroup2
{
public List<Projects> GetProjects()
{
//Code here
}
}
public class ProjectIncharge : IGroup2
{
public List<Projects> GetProjects()
{
//Code here
}
}
public class ProjectManager : IGroup2
{
public List<Projects> GetProjects()
{
//Code here
}
}
答案 0 :(得分:0)
您可以使用以下模式执行此操作,根据searchoption返回初始化对象。
interface IGroup2
{
string SearchOption { get; set; }
List<Projects> GetProjects();
}
public class GroupHead : IGroup2
{
public string SearchOption { get; set; }
public GroupHead()
{
SearchOption = "GroupHead";
}
public List<Projects> GetProjects()
{
//Code here
return null;
}
}
public class ProjectIncharge : IGroup2
{
public string SearchOption { get; set; }
public ProjectIncharge()
{
SearchOption = "ProjectIncharge";
}
public List<Projects> GetProjects()
{
//Code here
return null;
}
}
public class ProjectManager : IGroup2
{
public string SearchOption { get; set; }
public ProjectManager()
{
SearchOption = "ProjectManager";
}
public List<Projects> GetProjects()
{
//Code here
return null;
}
}
public class Test
{
private static List<IGroup2> searchRuleList = new List<IGroup2>()
{
new GroupHead(),
new ProjectIncharge(),
new ProjectManager(),
};
public static void Main(string[] args)
{
IGroup2 searchOptionRule = searchRuleList.Find(delegate(IGroup2 searchRule) { return searchRule.SearchOption.Equals(args[0]); });
}
}