2012-02-21 3 views
0

Я пытаюсь решить, какой дизайн шаблон я должен использовать для этой проблемы:Какой шаблон дизайна использовать для легкого добавления новых алгоритмов?

У меня есть классы компьютеров и алгоритм

1) Там может быть много экземпляров компьютера

2) Каждый компьютер может иметь ровно один экземпляр алгоритма

3) алгоритм является своего рода абстрактным, оно должно иметь одну пустоту «вычислить»

4) конкретный алгоритм в классе бетону teAlg1, ConcreteAlg2 и т. д., поэтому может быть много разных классов конкретного алгоритма.

Моя цель - создать экземпляр компьютера, в котором я создаю новый экземпляр ConcreteAlg235, не зная, что добавлен некоторый класс ConcreteAlg235. Поэтому моя цель - легко создавать новые классы алгоритмов и создавать свои экземпляры в экземпляре класса Computer без редактирования кода класса Computer.

Подумайте об этом, как будто я хочу сделать какое-то проприетарное программное обеспечение и дать возможность добавлять новые алгоритмы для пользователей и иметь легкую ремонтопригодность исходного кода для себя.

Спасибо за любые идеи

+0

Интересно, почему этот вопрос был анонимно проголосован? – aviad

+0

@aviad Я тоже хотел бы знать причину. – John

+0

Я проголосую за вас до тех пор, пока downvoter не объяснит – aviad

ответ

2
+0

имя более подходит, но идея в этом конкретном случае почти такая же ... – aviad

+0

это довольно просто, чем командный шаблон – John

+0

Нет, вы ищете шаблон команды ... обменная часть (без перекомпиляции и т. Д.) Возможна только в зависимости от используемой вами технологии. Шаблон команды позволяет серию классов обрабатывать событие, и серия может быть изменчивой серией. Со стратегией вам нужно поменять реализацию ... Я вижу, вы имеете в виду то же самое, что и я, и есть разные способы сделать это, но правильный шаблон, который подходит, - это шаблон команды. – vinnybad

1

Как насчет Command pattern для алгоритма? Таким образом, вы можете быть уверены в том, что при создании экземпляра компьютера вы будете ожидать реализацию командно-интерфейса с выполнением методы (может быть переименованы в чем-то более подходящее)

0

Стратегия и команда похож, но разные. Шаблон стратегии позволяет вам обменивать реализации конкретного алгоритма входе и выходе. Здесь вы можете найти шаблон команды, в котором конкретные классы реализуют общий интерфейс. Вы можете добавить общедоступный метод к классу Computer и добавить к внутреннему списку команд для обработки ... однако вы решили изменить этот список алгоритмов на компьютер, зависит от вас, но это один из способов сделать это и довольно просто.