-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathpatternFactoryRegistry.ts
32 lines (28 loc) · 1.21 KB
/
patternFactoryRegistry.ts
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
import { PatternFactory } from './Pattern';
import { ConstantAddBiPatternFactory } from './patterns/AddBiPattern';
import { AltPatternFactory } from './patterns/AltPattern';
import { ConstantPatternFactory } from './patterns/ConstantPattern';
import { DiffPatternFactory } from './patterns/DiffPattern';
import { FibPatternFactory } from './patterns/FibPattern';
import { GeometricPatternFactory } from './patterns/GeometricPattern';
import { ConstantMultiplyBiPatternFactory } from './patterns/MultiplyBiPattern';
const map = new Map<string, PatternFactory>();
export const patternFactoryRegistry = {
get(patternFactoryId: string): PatternFactory {
const factory = map.get(patternFactoryId);
if (factory === undefined) {
throw new Error(`Unknown pattern factory: ${patternFactoryId}`);
}
return factory;
},
};
const register = (patternFactory: PatternFactory) => {
map.set(patternFactory.identifier, patternFactory);
};
register(new ConstantPatternFactory());
register(new DiffPatternFactory());
register(new ConstantAddBiPatternFactory());
register(new GeometricPatternFactory());
register(new ConstantMultiplyBiPatternFactory());
register(new FibPatternFactory());
register(new AltPatternFactory());