В объектно-ориентированном программировании Null Object — это объект с определенным нейтральным («null») поведением. Шаблон проектирования Null Object описывает использование таких объектов и их поведение (или отсутствие такового). Впервые опубликован в серии книг Pattern Languages of Program Design.[1]
В таких объектно-ориентированных языках как Java или C# объекты могут иметь значение NULL. Ссылки на такие объекты нуждаются в проверке на NULL-значение перед использованием, так как методы класса «нулевого» объекта, как правило, не могут вызываться.
Целью Null-object является инкапсулирование отсутствия объекта путём замещения его другим объектом, который ничего не делает.
Данный шаблон проектирования рекомендуется использовать, когда:
На диаграмме классов в языке UML шаблон проектирования представлен следующим образом:
Пример на C#
1 /*
2 * Пример применения шаблона Null Object:
3 */
4
5 void Main()
6 {
7 AbstractEntity realEntity = new RealEntity();
8 realEntity.doSomething(); // RealEntity::doSomething
9
10 AbstractEntity unknownEntity = new NullEntity();
11 unknownEntity.doSomething(); // no output
12 }
13
14 // Define other methods and classes here
15 public abstract class AbstractEntity
16 {
17 public abstract void doSomething();
18 }
19
20 public class RealEntity : AbstractEntity
21 {
22 public override void doSomething()
23 {
24 Console.WriteLine("RealEntity::doSomething");
25 }
26 }
27
28 public class NullEntity : AbstractEntity
29 {
30 public override void doSomething()
31 {
32 // doing nothing
33 }
34 }
Пример на Java
1 /*
2 * Pattern Null object.
3 */
4
5 public class Main {
6
7 public static void main(String[] args) {
8 AbstractEntity realEntity = new RealEntity();
9 realEntity.doSomething(); // RealEntity::doSomething
10
11 AbstractEntity unknownEntity = new NullEntity();
12 unknownEntity.doSomething(); // no output
13 }
14 }
15
16 abstract class AbstractEntity {
17
18 public abstract void doSomething();
19 }
20
21 class RealEntity extends AbstractEntity {
22
23 @Override
24 public void doSomething() {
25 System.out.println("RealEntity::doSomething");
26 }
27 }
28
29 class NullEntity extends AbstractEntity {
30
31 @Override
32 public void doSomething() {
33
34 }
35 }
![]() |
Это заготовка статьи о программном обеспечении. Вы можете помочь проекту, дополнив её. |
Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".
Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.
Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .