example01.ts— Антипатерн: все в одному класі. Адреса як набір полів уPerson.example02.ts— Single Responsibility Principle (SRP): виділення адреси в окремий класPersonAddress.example03.ts— Антипатерн: жорстко закодована логіка знижок уDiscountCalculator(відсутність Open/Closed).example04.ts— Open/Closed Principle (OCP): стратегії знижок через інтерфейсDiscountта реалізації (RegularDiscount,VIPDiscount, ...).example05.ts— SRP: простий класRectangle, підрахунок площі методомarea().example06.ts— Антипатерн: порушення OCP,totalAreaзалежить від типу фігури (Rectangle,Circle).example07.ts— OCP: інтерфейсShape, методarea()для різних фігур (Rectangle,Circle).example08.ts— OCP: додавання нової фігури (Triangle) без зміниtotalArea.example09.ts— Liskov Substitution Principle (LSP): порушення —SquareнаслідуєRectangle, але змінює поведінкуsetWidth,setHeight.example10.ts— LSP: виправлення —SquareіRectangleнезалежні, обидва реалізуютьShape.example11.ts— Interface Segregation Principle (ISP): антипатерн —SimplePrinterзмушений реалізовувати непотрібні методи (scan,fax).example12.ts— ISP: розділення інтерфейсівPrinter,Scanner,Fax.example13.ts— ISP: антипатерн — інтерфейсProgrammerмістить зайве дляRemoteProgrammer(eatPizza).example14.ts— ISP: правильне розділення —CodeProducerіPizzaConsumer.example15.ts— Dependency Inversion Principle (DIP): антипатерн —UserManagerнапряму створюєConsoleLogger.example16.ts— DIP:UserManagerотримуєILoggerчерез конструктор (інверсія залежностей).example17.ts— DIP:ApiClientнапряму використовуєaxios(антипатерн).example18.ts— DIP:ApiClientпрацює через інтерфейсIHttpClient(інверсія залежностей, можна підміняти реалізацію).example19.ts— DIP: декілька реалізаційIHttpClient(AxiosHttpClient,FetchHttpClient),ApiClientне залежить від конкретної бібліотеки.
Цей список допоможе студентам швидко знайти потрібний приклад по SOLID.