Рубрики
2. Open-closed principle SOLID

SOLID «EXAMPLE» класс оружие Weapon

2. Open-closed principle
Принцип открытости/закрытости

класс оружие Weapon
у него три поля type, damage, range (тип, урон, дистанция)

class Weapon {
 type: string;
 damage: number; // 0 - 100;
 range: number; // 0 - 100;

 contructor(type: string, damage: number, range: number) {
  this.type = type;
  this.damage  = damage;
  this.range = range;
 }
}

класс персонаж Character
который может это оружие Weapon принимать через метод

class Character {
 name: string;
 weapon: Weapon;

 contructor(name: string, weapon: Weapon) {
  this.name = name;
  this.weapon= weapon;
 }
 принимает оружие
 changeWeapon(newWeapon:Weapon) {
  this.weapon = newWeapon;
 }
}
Рубрики
2. Open-closed principle SOLID

Open-closed principle «Понятие»

2. Open-closed principle
Принцип открытости/закрытости

классы, компоненты, модули, функции

  • должны быть открыты для расширения
    композиция, наследование
  • должны быть закрыты для изменения
    код уже протестирован и работает и у нас с ним проблем нет
    при изменении кода необходимо делать прегриссионное тестирование