C#/.NET - Null Object Pattern

preview_player
Показать описание
В данном техтолке мы поговорим о том что такое нулевая ссылка (Null Reference) в компьютерном мире, как она появилась и почему, кто её создатель, какие проблемы могут возникать благодаря фундаментальной вещи, представить современную разработку без которой сегодня не представляется возможным. О цене этих проблем и как с этим жить, и конечно о том, как мы можем элегантно избегать таких проблем, используя решения. Также в режиме Live-Demo рассмотрим пример на языке C#, определим его проблему и попробуем эстетично его исправить, применив паттерн нулевого объекта (The Null Object Pattern)

Рекомендации по теме
Комментарии
Автор

Отличный пример! Но, если это был пример про подход (паттерн), то сетать дефолтную скидку в конструкторе без условий не очень хороший подход. В зависимости от входных условий это может создавать большой, ненужный, трафик памяти. Можно было бы 1) добавить необязательный параметр в конструктор со скидками (и если он не задан, сетать дефолтную), 2) Закешировать дефолтную скидку - например, сделать её синглетон. Тогда было бы красиво.

AntonGelenava
Автор

Замечание: скидка считается правильно. Вызывая метод AddDiscout() мы подменяем реализацию подсчета скидки нужной нам стратегией и всегда используется последняя применённая стратегия, т.е. они не суммируются ввиду реализации паттерна добавления стратегии

PlatinumTechTalks
Автор

Если объект достаточно большой, то рационально ли создавать его. Возможно, будет эффективнее воспользоваться тернарником с точки зрения производительности, а проблему инкапсуляции решить иначе

timurkatsuka