powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Реализация паттерна Builder
7 сообщений из 7, страница 1 из 1
Реализация паттерна Builder
    #37932250
scymaks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый вечер!

Есть некий класс:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
public class Product {
    private String name;

    private String description;

    public Product() {
        setName("");
        setDescription("");
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }
}



Реализуем паттерн Builder для данного класса:
...
Рейтинг: 0 / 0
Реализация паттерна Builder
    #37932275
scymaks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
public abstract class AbstractProductBuilder {
    private Product product;

    public AbstractProductBuilder() {
        product = new Product();
        buildName();
        buildDescription();
    }

    public abstract void buildName();

    public abstract void buildDescription();

    public Product getProduct() {
        return product;
    }
}


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
public class SimpleProductBuilder extends AbstractProductBuilder {
    public SimpleProductBuilder() {
        super();
    }

    @Override
    public void buildName() {
        getProduct().setName("Apple");
    }

    @Override
    public void buildDescription() {
        getProduct().setDescription("Red apple");
    }
}



Это нормальный подход?
...
Рейтинг: 0 / 0
Реализация паттерна Builder
    #37932291
Kostya Ilyinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scymaks,

Смею утверждать что нет. http://rwhansen.blogspot.com.au/2007/07/theres-builder-pattern-that-joshua.html
Почитайте немного вот тут, поймете где дали промашку.
...
Рейтинг: 0 / 0
Реализация паттерна Builder
    #37932295
Kostya Ilyinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kostya Ilyinov,

Кстати не самый удачный пример привел в первом ответе. Вот тут почитайте
http://stackoverflow.com/questions/4859815/whats-the-revised-builder-pattern
...
Рейтинг: 0 / 0
Реализация паттерна Builder
    #37932370
scymaks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kostya Ilyinov,

спасибо, за ссылки, находил подобное ( http://habrahabr.ru/post/86252 ).

Меня в таком подходе смущает то, что builder дублирует поля ( => знает как устроен объект, который он будет строить, а следовательно, жестко привязан к реализации ).
...
Рейтинг: 0 / 0
Реализация паттерна Builder
    #37932915
scymaks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это нормально разве, что мы привязанны к реализации...?

Да и вообще, от чего спасает Builder?

Вот в моем примере нельзя "забыть" выполнить какие-то операции по построению объекта, а там...
...
Рейтинг: 0 / 0
Реализация паттерна Builder
    #37934638
пролетевший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scymaksЭто нормально разве, что мы привязанны к реализации...?

Нормально. Просто с builder ситуация обычно переворачивается по сравнению с классами: реализацию знает только builder ( обычно это private inner class ), a возвращает обычно интерфейс.
scymaksДа и вообще, от чего спасает Builder?

Вот в моем примере нельзя "забыть" выполнить какие-то операции по построению объекта, а там...
Именно так, закрывает возможность попасть в некорректное состояние. То есть компилятор проверяет не только типы и параметры, но и логику программы.
Предельный случай - как написать игру в крестики нолики где любая попытка сделать неправильный ход вызывает ошибку компиляции.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Реализация паттерна Builder
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]