Не читал ссылки, но разница между паттернами радикальная. Как между автомобилем и сдобным тестом.
Фабричный метод:
По сути просто статичный (не обязательно статичный) метод, который внутри себя создаёт экземпляр объекта и возращает его.
Например:
публичный статичный метод СоздатьФонарик() -> Фонарик
Строитель - про создание объекта "по шагам".
Строитель - это объект, который имеет внутри себя какое-то состояние и набор методов, чтобы это внутреннее состояние изменить и подобие метода "построить", который создаст объект исходя из полученного состояния.
Например:
класс СтроительФонарика {
публичный метод ДобавитьЛапочку(Лампочка);
публичный метод ДобавитьБатарейку(Батарейка);
публичный метод ДобавитьЛинзу(Линза);
публичный метод ДобавитьКнопку(Кнопка);
публичный метод Построить() -> Фонарик;
}
Фасад - это класс, который упрощает взаимодействие с чем-то очень сложным и многословным.
Не могу тут дать пример.
Но например если бы фонарик имел метод "нажать на кнопку", то фасад мог бы хранить внутри себя состояние, включен ли фонарик и имел бы методы "Включить" и "Выключить".
Хотя обычно фасад внутри себя содержит много разных классов для управления разными частями большой системы.
Фу блин, я описал декоратор
Декоратор- это просто класс, который внутри содержит объект, который реализует какой-то интерфейс, и при этом сам декоратор реализует этот же интерфейс и делегирует ответственность классу, который в него передали:
Пример:
класс ФонарикНаоборот {
приватное поле Фонарик.
конструктор(Фонарик) {
этот.Фонарик = Фонарик;
}
публичный метод Включить() {
Фонарик.Выключить();
}
публичный метод Выключить() {
Фонарик.Включить();
}
}