Це простий інструмент для малювання, який дозволяє користувачам створити красу, використовуючи різні інструменти і кольори.
- Завантажте всі файли з репозиторію.
- Відкрийте файл
index.htmlу веб-браузері. - Використовуйте інструменти малювання для створення різноманітних малюнків.
index.html- Містить основну розмітку для інтерфейсу додаткуscript.js- Містить всі функції, необхідні для малювання на полотні, обробки подій користувача, управління інструментами та кольорамиstyle.css- Містить CSS правила для розмітки, елементів інтерфейсу, кнопок, інструментів та інших візуальних елементівicons/- Директорія, що містить зображення та іконки, використовувані у додаткуObserver/- Директорія, що містить файли для спостереження деяких елементів
-
Single Responsibility Principle (SRP)
-
Open/Closed Principle (OCP)
- Програмні сутності повинні бути відкриті для розширення, але закриті для модифікації.
- Використання структури подій дозволяє легко додавати нові інструменти без зміни існуючих.
-
Liskov Substitution Principle (LSP)
- Об'єкти підкласів повинні бути замінними на об'єкти батьківського класу без порушення функціональності програми.
- Всі інструменти використовують однаковий інтерфейс для малювання, і тому можуть бути взаємозамінними у класі ToolFactory.
-
Interface Segregation Principle (ISP)
- Інтерфейси розділені на спеціалізовані інтерфейси, щоб клієнти не були змушені залежати від методів, які вони не використовують.
- Кожен інструмент має свої окремі функції та інтерфейси, що дозволяє використовувати тільки ті методи, які потрібні для конкретного інструменту.
-
Dependency Inversion Principle (DIP)
- Модулі високого рівня не повинні залежати від модулів низького рівня. Обидва повинні залежати від абстракцій.
- Використовує абстракції для управління інструментами, такими як setActiveTool та setActiveShape, яка приймає інструмент як параметр, що дозволяє легко додавати або змінювати інструменти без зміни коду високого рівня.
-
Factory Pattern
- Використовується для створення різних інструментів малювання (пензель, гумка, спрей) через фабричний метод. Це дозволяє легко додавати нові інструменти без зміни існуючого коду.
-
Observer Pattern
- Використовується для надання можливості різним елементам інтерфейсу спостерігати за змінами у об'єкті Canvas. Observer
- Спостереження 1
- Спостереження 2
-
Memento Pattern
- Методи saveCanvasState(), undoLastAction() та redoLastAction() відповідають за збереження стану полотна, відміну останньої дії та повернення відміненої дії.
-
Extract Method
- Розбивання великих функцій на менші методи для покращення читабельності та повторного використання коду.
-
Rename Variable
- Зміна назв змінних на більш зрозумілі та змістовні, що допомагає краще зрозуміти код.
-
Replace Magic Numbers with Constants
- Замінювати магічні числа константами для полегшення розуміння та обслуговування коду.