-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAdapter.js
45 lines (37 loc) · 1.13 KB
/
Adapter.js
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
// Adapter is a structural pattern.
// Адаптер - структурный шаблон проектирования.
class Hazelnut {
simpleAddition() {
console.log('Простое добавление лесного ореха!');
}
}
class Walnut {
selectiveAddition() {
console.log('Удаляем перегородки и добавляем грецкий орех!');
}
}
class AdapterWalnut {
constructor(nut) {
this.nut = nut;
}
simpleAddition() {
this.nut.selectiveAddition();
}
}
class ChocolateWithNuts {
nutsAddition(nut) {
nut.simpleAddition();
}
}
// Hazelnut
const myChocolate1 = new ChocolateWithNuts();
const myNuts1 = new Hazelnut();
myChocolate1.nutsAddition(myNuts1); // Добавили лесной орех
// Walnut с адаптером
const myChocolate2 = new ChocolateWithNuts();
const myNutsAdapter = new AdapterWalnut(new Walnut());
myChocolate2.nutsAddition(myNutsAdapter); // Добавили грецкий орех
// Walnut без адаптера
const myChocolate3 = new ChocolateWithNuts();
const myNuts3 = new Walnut();
myChocolate3.nutsAddition(myNuts3); // Error