Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
fabrika [2024/04/23 15:05] oresh.dm |
fabrika [2024/04/23 15:15] (текущий) oresh.dm |
||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| - | Порождающие паттерны - это паттерны, | + | **Порождающие паттерны** - это паттерны, |
| - | import Foundation | + | **Фабричный метод (англ. Factory Method), или виртуальный конструктор (англ. Virtual Constructor)** — порождающий шаблон проектирования, |
| - | //Factoty | + | |
| - | enum ClothesType { | + | **Цель** |
| - | case head | + | Определяет интерфейс для создания объекта, |
| - | case shoes | + | |
| - | } | + | * классу заранее неизвестно, |
| + | * класс спроектирован так, чтобы объекты, | ||
| + | * класс делегирует свои обязанности одному из нескольких вспомогательных подклассов, | ||
| + | |||
| + | import Foundation | ||
| + | //Factoty | ||
| + | |||
| + | | ||
| + | case head | ||
| + | case shoes | ||
| + | } | ||
| - | protocol Clothes { | + | |
| var title: String { get } | var title: String { get } | ||
| var type: ClothesType { get } | var type: ClothesType { get } | ||
| var color: String { get } | var color: String { get } | ||
| - | |||
| func putOn() | func putOn() | ||
| - | } | + | |
| class Hat: Clothes { | class Hat: Clothes { | ||
| Строка 53: | Строка 61: | ||
| } | } | ||
| - | // | + | |
| - | let hat = ClothesFactory.shared.createClothes(type: | + | let hat = ClothesFactory.shared.createClothes(type: |
| - | let shoes = ClothesFactory.shared.createClothes(type: | + | let shoes = ClothesFactory.shared.createClothes(type: |
| - | let hat2 = ClothesFactory.shared.createClothes(type: | + | let hat2 = ClothesFactory.shared.createClothes(type: |
| - | var clothes: [Clothes] = [hat, | + | |
| - | for clothes1 in clothes { | + | |
| - | clothes1.putOn() | + | clothes1.putOn() |
| - | } | + | } |