Below is an instance of the factory pattern, with the factory class nested within the class that it creates instances for, implemented as a singleton.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| public class Dog{ public string Name { get; set; } private Dog(string name) { Name = name; } public class Factory { // Instance created when first referenced private static readonly Factory instance = new Factory(); // Prevent early instantiation due to beforefieldinit flag static Factory() { } // Prevent instantiation private Factory() { } public static Factory Instance { get { return instance; } } // Factory method public Dog CreateDog(string name) { return new Dog(name); } }} |

