-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathindex.ts
More file actions
126 lines (117 loc) · 3.26 KB
/
index.ts
File metadata and controls
126 lines (117 loc) · 3.26 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
import {
CreationalPatternsEnum,
PatternsCategoriesEnum,
StructurePatternsEnum
} from "./src/patterns.enum";
import { startAbstractFactory } from "./src/creationals/abstract-factory";
import { startBuilder } from "./src/creationals/builder";
import { startFactory } from "./src/creationals/factory-method";
import { startPrototype } from "./src/creationals/prototype";
import { startSingleton } from "./src/creationals/singleton";
import { startAdapter } from "./src/structurals/adapter";
import { startBridge } from "./src/structurals/bridge";
import { startComposite } from "./src/structurals/composite";
import { startDecorator } from "./src/structurals/decorator";
import { startFacade } from "./src/structurals/facade";
import { startFlyweight } from "./src/structurals/flyweight";
import { startProxy } from "./src/structurals/proxy";
const readline = require("readline");
let rl = null;
const startStructuralPatterns = () => {
console.log(`
1 - Adapter,
2 - Bridge,
3 - Composite,
4 - Decorator,
5 - Facade,
6 - Flyweight,
7 - Proxy
`);
console.log("structurals");
rl.question("What Structural pattern do you want to execute?", answer => {
switch (answer) {
case StructurePatternsEnum.ADAPTER:
startAdapter();
break;
case StructurePatternsEnum.BRIDGE:
startBridge();
break;
case StructurePatternsEnum.COMPOSITE:
startComposite();
break;
case StructurePatternsEnum.DECORATOR:
startDecorator();
break;
case StructurePatternsEnum.FACADE:
startFacade();
break;
case StructurePatternsEnum.FLYWEIGHT:
startFlyweight();
break;
case StructurePatternsEnum.PROXY:
startProxy();
break;
}
rl.close();
start();
});
};
const startCreationalPatterns = () => {
console.log(`
1 - Abstract Factory;
2 - Builder;
3 - Factory;
4 - Prototype;
5 - Singleton;
`);
rl.question("What Creational pattern do you want to execute?", answer => {
switch (answer) {
case CreationalPatternsEnum.ABSTRACT_FACTORY:
startAbstractFactory();
break;
case CreationalPatternsEnum.BUILDER:
startBuilder();
break;
case CreationalPatternsEnum.FACTORY:
startFactory();
break;
case CreationalPatternsEnum.PROTOTYPE:
startPrototype();
break;
case CreationalPatternsEnum.SINGLETON:
startSingleton();
break;
default:
console.log("Option not mapped");
}
rl.close();
start();
});
};
export const start = () => {
rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
terminal: false
});
console.log(`
1 - Creational patterns;
2 - Structural patterns;
`);
rl.question("Choose an pattern category: ", answer => {
switch (answer) {
case PatternsCategoriesEnum.CREATIONALS:
startCreationalPatterns();
break;
case PatternsCategoriesEnum.STRUCTURALS:
startStructuralPatterns();
break;
case PatternsCategoriesEnum.BEHAVIORAL:
// startBehavioralPatterns();
// break;
default:
console.log("Option not mapped");
}
});
};
start();