【发布时间】:2019-04-11 11:44:14
【问题描述】:
我是模式的新手,我开始研究工厂模式来做几何图形的练习。
这是我的代码:
namespace MyNameSpace
{
class MainApp
{
static void Main(string[] args)
{
//Problem: I can't access to
//the Cube() builder because it's private.
GeometricFigure cube = new Cube();
Console.WriteLine("Blablabla");
Console.ReadLine();
}
}
}
这是我实现工厂模式的“创建者”方法
public abstract class GeometricFigure
{
private float Dimension { get; set; }
private float Coordinate_X { get; set; }
private float Coordinate_Y { get; set; }
private float Coordinate_Z { get; set; }
public GeometricFigure()
{
CreateFigure();
}
//Factory method
public abstract void CreateFigure();
}
这是我的“ConcrateCreator”课程
class Cube : GeometricFigure
{
public override void CreateFigure()
{
new Cube();
}
}
我认为我的代码很好......但是......我不明白为什么 Cube 类是私有的。综上所述,公开Cube类是否正确?如果答案不是...如果 Cube 类是私有的,我如何从 Main 方法实例化多维数据集对象? :(
提前感谢大家。
艾玛。
【问题讨论】:
-
当你没有指定访问修饰符时,你的 Cube 类实际上是
internal。如果您希望它可以在其程序集之外访问,那么您必须将其设置为公开。 -
您希望
new Cube();行做什么? -
这里有一个很好的例子来说明如何正确实现工厂模式:dofactory.com/net/factory-method-design-pattern
-
我认为你应该在设计模式之前学习OOP。整个设计模式方法基于 OOP。您还可以检查访问修饰符docs.microsoft.com/en-us/dotnet/csharp/programming-guide/…
-
您的模式应该返回您创建的实例。它不应该是无效的
标签: c# design-patterns factory