-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathFactoryMethodExample.cs
More file actions
132 lines (114 loc) · 3.29 KB
/
FactoryMethodExample.cs
File metadata and controls
132 lines (114 loc) · 3.29 KB
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DesignPattern
{
public interface IDocument
{
// Method to open the document
void Open();
// Method to save the document
void Save();
}
public class WordDocument : IDocument
{
// Implementation of the Open method for Word documents
public void Open()
{
Console.WriteLine("Opening Word document...");
}
// Implementation of the Save method for Word documents
public void Save()
{
Console.WriteLine("Saving Word document...");
}
}
public class PdfDocument : IDocument
{
// Implementation of the Open method for PDF documents
public void Open()
{
Console.WriteLine("Opening PDF document...");
}
// Implementation of the Save method for PDF documents
public void Save()
{
Console.WriteLine("Saving PDF document...");
}
}
public class ExcelDocument : IDocument
{
// Implementation of the Open method for Excel documents
public void Open()
{
Console.WriteLine("Opening Excel document...");
}
// Implementation of the Save method for Excel documents
public void Save()
{
Console.WriteLine("Saving Excel document...");
}
}
public abstract class DocumentCreator
{
// Abstract factory method to create a document
public abstract IDocument FactoryMethod();
// Method to open a document using the factory method
public void OpenDocument()
{
var document = FactoryMethod();
document.Open();
}
// Method to save a document using the factory method
public void SaveDocument()
{
var document = FactoryMethod();
document.Save();
}
}
public class WordDocumentCreator : DocumentCreator
{
// Factory method to create a Word document
public override IDocument FactoryMethod()
{
return new WordDocument();
}
}
public class PdfDocumentCreator : DocumentCreator
{
// Factory method to create a PDF document
public override IDocument FactoryMethod()
{
return new PdfDocument();
}
}
public class ExcelDocumentCreator : DocumentCreator
{
// Factory method to create an Excel document
public override IDocument FactoryMethod()
{
return new ExcelDocument();
}
}
public class FactoryMethodExample
{
public static void Run()
{
DocumentCreator creator;
// Create and use a Word document
creator = new WordDocumentCreator();
creator.OpenDocument();
creator.SaveDocument();
// Create and use a PDF document
creator = new PdfDocumentCreator();
creator.OpenDocument();
creator.SaveDocument();
// Create and use an Excel document
creator = new ExcelDocumentCreator();
creator.OpenDocument();
creator.SaveDocument();
}
}
}