@@ -660,7 +660,48 @@ public class Samsung : Phone
660
660
public override string ToString () => $" Самсунг: {base .ToString ()} Включена ли фронтальная камера = {IsFrontCamera }" ;
661
661
}
662
662
```
663
- :three :
663
+ :three : Создадим интерфейс создателя телефонов IPhoneDeveloper:
664
+ ``` C#
665
+ /// <summary >
666
+ /// Содержит методы для рабработчика телефонов.
667
+ /// </summary >
668
+ public interface IPhoneDeveloper
669
+ {
670
+ /// <summary >
671
+ /// Создание телефона.
672
+ /// </summary >
673
+ /// <returns >Телефон.</returns >
674
+ Phone CreatePhone ();
675
+ }
676
+ ```
677
+ :four : Создадим разработчиков телефонов Нокиа и Самсунга, реализующих интерфейсы __ IPhoneDeveloper__ :
678
+ ``` C#
679
+ /// <summary >
680
+ /// Разработчик телефонов фирмы Нокиа.
681
+ /// </summary >
682
+ public class NokiaDeveloper : IPhoneDeveloper
683
+ {
684
+ /// <summary >
685
+ /// Создание телефона.
686
+ /// </summary >
687
+ /// <returns >Телефон.</returns >
688
+ public Phone CreatePhone () => new Nokia ();
689
+ }
690
+
691
+ /// <summary >
692
+ /// Разработчик телефонов фирмы Самсунг.
693
+ /// </summary >
694
+ public class SamsungDeveloper
695
+ {
696
+ /// <summary >
697
+ /// Создание телефона.
698
+ /// </summary >
699
+ /// <returns >Телефон.</returns >
700
+ public Phone CreatePhone () => new Samsung ();
701
+ }
702
+ ```
703
+ :white_check_mark : __ Преимущества паттерна Factory Method__ : клонирование объектов без привязки к конкретным классам, сокращение кода инициализации экземплятор классов<br >
704
+ :x : __ Недостатки__ : Проблемы с клонированием составных объектов, то есть, тех объектов, которые внутри содержат другие объекты.
664
705
## Структурные паттерны
665
706
__ Структурные паттерны__ (Structural) - цель их применения заключается в том, что благодаря им вы можете совмещать и сочетать сущности вместе.
666
707
___
0 commit comments