Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 2494d02

Browse files
Update README.md
1 parent f34b891 commit 2494d02

File tree

1 file changed

+70
-1
lines changed

1 file changed

+70
-1
lines changed

‎README.md

Lines changed: 70 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -582,9 +582,78 @@ public class Customer : User
582582
___
583583
### Фабричный метод
584584
__Фабричный метод (Factory Method)__ - это порождающий паттерн проектирования, который определяет интерфейс для создания объектов определенного класса, но именно в подклассах принимается решение о типе объекта, который будет создан.<br>
585-
> :white_check_mark: Фабричный метод будет полезен, если мы заранее не знаем, какие типы объектов мы хотим создать.
585+
> :white_check_mark: Фабричный метод будет полезен, если мы заранее не знаем, объекты каких типов мы хотим создать.
586586
587+
:one: Реализуем паттерн на примере создания телефонов. Пусть у нас будет базовый класс __Phone__, содержащий следующие свойства:
588+
```C#
589+
/// <summary>
590+
/// Телефон.
591+
/// </summary>
592+
public abstract class Phone
593+
{
594+
/// <summary>
595+
/// Цена.
596+
/// </summary>
597+
public decimal Price { get; set; }
598+
599+
/// <summary>
600+
/// Модель.
601+
/// </summary>
602+
public string Model { get; set; } = string.Empty;
603+
604+
/// <summary>
605+
/// Процессор.
606+
/// </summary>
607+
public string Processor { get; set; } = string.Empty;
608+
609+
/// <summary>
610+
/// Оперативная память.
611+
/// </summary>
612+
public int RandomAccessMemory { get; set; }
613+
614+
/// <summary>
615+
/// Строковое представления объекта телефона.
616+
/// </summary>
617+
/// <returns>Данные телефона в виде строки.</returns>
618+
public override string ToString() => $"Цена = {Price} Модель = {Model} Процессор = {Processor} Оперативная память = {RandomAccessMemory}";
619+
}
620+
```
621+
:two: Создадим два класса наследника: Nokia и Samsung, в них добавим по одному дополнительному свойству.
622+
```C#
623+
/// <summary>
624+
/// Нокиа.
625+
/// </summary>
626+
public class Nokia : Phone
627+
{
628+
/// <summary>
629+
/// Работает ли батарея.
630+
/// </summary>
631+
public bool IsBatteryWork { get; set; }
632+
633+
/// <summary>
634+
/// Строковое представления объекта Нокиа.
635+
/// </summary>
636+
/// <returns>Данные Нокиа в виде строки.</returns>
637+
public override string ToString() => $"Нокиа: {base.ToString()} Работает ли батарея = {IsBatteryWork}";
638+
}
587639

640+
/// <summary>
641+
/// Самсунг.
642+
/// </summary>
643+
public class Samsung : Phone
644+
{
645+
/// <summary>
646+
/// Влючена ли сейчас фронтальная камера.
647+
/// </summary>
648+
public bool IsFrontCamera { get; set; }
649+
650+
/// <summary>
651+
/// Строковое представления объекта Самсунга.
652+
/// </summary>
653+
/// <returns>Данные Самсунга в виде строки.</returns>
654+
public override string ToString() => $"Самсунг: {base.ToString()} Включена ли фронтальная камера = {IsFrontCamera}";
655+
}
656+
```
588657
## Структурные паттерны
589658
__Структурные паттерны__ (Structural) - цель их применения заключается в том, что благодаря им вы можете совмещать и сочетать сущности вместе.
590659
___

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /