forked from vladilenm/SOLID_javascript
-
Notifications
You must be signed in to change notification settings - Fork 0
/
4_I.js
86 lines (76 loc) · 1.37 KB
/
4_I.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
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
// Interface segregation principle
//
// class Animal {
// constructor(name) {
// this.name = name
// }
//
// walk() {
// console.log(`${this.name} умеет ходить`)
// }
//
// swim() {
// console.log(`${this.name} умеет плавать`)
// }
//
// fly() {
// console.log(`${this.name} умеет летать`)
// }
// }
//
// class Dog extends Animal {
// fly() {
// return null
// }
// }
//
// class Eagle extends Animal {
// swim() {
// return null
// }
// }
//
// class Whale extends Animal {
// fly() {
// return null
// }
//
// walk() {
// return null
// }
// }
//
class Animal {
constructor(name) {
this.name = name
}
}
const swimmer = {
swim() {
console.log(`${this.name} умеет плавать`)
}
}
const flier = {
fly() {
console.log(`${this.name} умеет летать`)
}
}
const walker = {
walk() {
console.log(`${this.name} умеет ходить`)
}
}
class Dog extends Animal {}
class Eagle extends Animal {}
class Whale extends Animal {}
Object.assign(Dog.prototype, swimmer, walker)
Object.assign(Eagle.prototype, flier, walker)
Object.assign(Whale.prototype, swimmer)
const dog = new Dog('Рэкс')
dog.walk()
dog.swim()
const eagle = new Eagle('Орел')
eagle.fly()
eagle.walk()
const whale = new Whale('Большой синий друг')
whale.swim()