You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+5-4Lines changed: 5 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -265,7 +265,7 @@ public class SectionDatabase
265
265
266
266
returnDatabase;
267
267
}
268
-
}
268
+
}
269
269
```
270
270
:white_check_mark:__Преимущества паттерна Singleton__: класс гарантированно имеет только один экземпляр и не более, у нас есть точка доступа к единственному экземпляру (в нашем случае это метод Initialize) <br>
271
271
:x:__Недостатки__: нарушение принципа единой ответственности (Single Responsibility Principle), требуется особая обработка в многопоточной среде.
@@ -507,7 +507,7 @@ public abstract class User
507
507
/// </summary>
508
508
/// <returns>Данные пользователя в виде строки.</returns>
509
509
publicoverridestringToString() =>$"Идентификатор - {Id} Имя - {FirstName} Фамилия - {LastName} Отчество - {Patronymic}";
510
-
}
510
+
}
511
511
```
512
512
:two: Теперь реализуем класс-наследник исполнителя: в него не будем добавлять дополнительные свойства. Реализация метода Clone будет выглядеть так:
513
513
```C#
@@ -527,7 +527,7 @@ public class Executor : User
527
527
/// </summary>
528
528
/// <returns>Данные исполнителя в виде строки.</returns>
> В данном случае мы можем выполнить неполное (поверхностное) копирование. Это подходит тогда, когда у нас все поля Executor являются значимыми типами (исключение: string).
533
533
@@ -571,7 +571,7 @@ public class Customer : User
571
571
/// </summary>
572
572
/// <returns>Данные заказчика в виде строки.</returns>
> Здесь у нас уже присутствует класс Passport - это ссылочный тип, соответсвенно, мы не можем использовать неполное копирование. Если мы будем использовать неполное копирование, то у нас будет два заказчика ссылаться на один и тот же объект паспортных данных. Поэтому нам придется создать новый объект паспорта и вручную его проинициализировать.
577
577
@@ -1109,6 +1109,7 @@ public class User : IObserver<Message>
:three: Теперь создадим класс нашего корпоративного портала, реализующий интерфейс IObservable (наблюдаемый объект). В качестве параметра также выступает тип данных Message - тип сообщения для подписчиков.
0 commit comments