I have a question about coding practice. I want to create a class which can’t be initialized. I believe I have 3 options:
- Abstract modifier
- Static modifier
- Private constructor
I don’t want to create a static class simply because of having to name all of my properties and methods ‘static’ – it looks messy (and I can’t use the ‘this’ keyword).
According to the MSDN:
Use the abstract modifier in a class declaration to indicate that a
class is intended only to be a base class of other classes.
Edit Nothing will inherit form this class.
However, it would be a solution (but it seems wrong to me to use it in this situation).
Or, I can make a private constructor so the class cannot be initialized.
If it helps the reason for why is this: The class is responsible for starting off a work flow process. It doesn’t need to be initialized since nothing is returned – it just needs to be ‘started’.
Demo code
class Program
{
static void Main(string[] args)
{
WorkFlow wf = new WorkFlow(); // this will error which is fine!
ComplexObject co = new ComplexObject();
WorkFlow.Begin(co);
Console.ReadKey();
}
}
public class WorkFlow
{
private WorkFlow()
{
//private to prevent initialization but this feels wrong!
}
public static void Begin(ComplexObject co)
{
//code to begin the workflow
}
}
What about doing just what you have done but using your Begin method as a factory to create your workflow.