fabrika

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
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 
 + 
 +  enum ClothesType { 
 +      case head 
 +      case shoes  
 +  }
  
-protocol Clothes {+  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: .head) +  let hat = ClothesFactory.shared.createClothes(type: .head) 
-let shoes = ClothesFactory.shared.createClothes(type: .shoes) +  let shoes = ClothesFactory.shared.createClothes(type: .shoes) 
-let hat2 = ClothesFactory.shared.createClothes(type: .head)+  let hat2 = ClothesFactory.shared.createClothes(type: .head)
  
-var clothes: [Clothes] = [hat,shoes,hat2]+  var clothes: [Clothes] = [hat,shoes,hat2]
  
-for clothes1 in clothes { +  for clothes1 in clothes { 
-    clothes1.putOn() +      clothes1.putOn() 
-}+  }
  
  • /sites/data/attic/fabrika.1713884730.txt.gz
  • Последнее изменение: 2024/04/23 15:05
  • oresh.dm