Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Программа для мебельной фабрики, Учебная задача 
:(
    Опции темы
Loba4evsky
Дата 11.12.2010, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 21.11.2010

Репутация: нет
Всего: нет



Есть такая задача - программа для мебельной фабрики (учебная). Суть - реализация паттерна Factory.
Я ещё совсем зелёный, смотрел разные примеры в нете, написал нечто, моделирующее деятельность мебельной фабрики. 
Пользователь формирует запрос (сделать столько-то стульев, столов и т.д.), фабрика его выполняет. Присутствует также склад с абстрактными "деталями", которые нужны для производства.
Вопрос такой: насколько верно реализован паттерн? Примеры в нете разные, я запутался совсем.

Вот она, фабрика:
Код

package MyFurnitureFactory;

public class FurnitureFactory {
    private static FurnitureFactory Instance;

    public static final int TCHAIR = 0;
    public static final int TCUPBOARD = 1;
    public static final int TTABLE = 2;
    public static final int TDIVAN = 3;

    public static final int PCHAIR = 50;
    public static final int PCUPBOARD = 300;
    public static final int PTABLE = 150;
    public static final int PDIVAN = 350;

    private FurnitureFactory(){

    }

    public static FurnitureFactory getInstance()
    {
        if (Instance==null){Instance = new FurnitureFactory();}
        return Instance;
    }

    public Product createProduct (int type) {
        Product unit = null;
        switch (type)
        {
            case TCHAIR :
                if (Store.getInstance().giveDetails(Chair.askDetails()))
                {
                    unit = new Chair();
                    unit.setPrice(PCHAIR);
                    unit.setType(TCHAIR);
                }
                break;
            case TDIVAN :
                if (Store.getInstance().giveDetails(Divan.askDetails()))
                {
                    unit = new Divan();
                    unit.setPrice(PDIVAN);
                    unit.setType(TDIVAN);
                }
                break;
            case TCUPBOARD :
                if (Store.getInstance().giveDetails(Cupboard.askDetails()))
                {
                    unit = new Cupboard();
                    unit.setPrice(PCUPBOARD);
                    unit.setType(TCUPBOARD);
                }
                break;
            case TTABLE :
                if (Store.getInstance().giveDetails(Table.askDetails()))
                {
                    unit = new Table();
                    unit.setPrice(PTABLE);
                    unit.setType(TTABLE);
                }
                break;
            default : unit = null;
        }
        return unit;
    }
}

class Divan extends Product {
    public static int[] askDetails(){
        return  new int [] {50,20,0,20};
    }
}

class Cupboard extends Product{
    public static int[] askDetails(){
        return  new int [] {40,20,2,0};
    }
}

class Table extends Product{
    public static int[] askDetails(){
        return  new int [] {20,20,3,0};
    }
}

class Chair extends Product{

    public static int[] askDetails(){
        return  new int [] {5,10,0,5};
    }
}


А вот класс Product, от которого происходят все столы и стулья:
Код

package MyFurnitureFactory;


public abstract class Product {
    
    private int Type;
    private int Price;

    public int getPrice() {
        return Price;
    }

    public void setPrice(int price) {
        Price = price;
    }

    public int getType() {
        return Type;
    }

    public void setType(int type) {
        Type = type;
    }

    public static int[] askDetails() {return new int [] {0,0,0,0}; }
    
}

 smile 

PM MAIL   Вверх
AntonSaburov
Дата 12.12.2010, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



В принципе разумно. Правда классы реальных продуктов наверно надо выделять в отдельные файлы. 
И делать createProduct можно и в виде static. А так нормально.
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0419 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.