|
|
|
Вопрос про Шаблон проектирования
|
|||
|---|---|---|---|
|
#18+
Здравствуйте Могли бы вы определить если данный код(написанный мной) на c# может относится к какому ту шаблону проектирования(design pattern)? Код: c# 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. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. Цель кода, позволить юзеру давать приказы на выполнения команд не имея к ним отношения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2013, 10:59 |
|
||
|
Вопрос про Шаблон проектирования
|
|||
|---|---|---|---|
|
#18+
public void User() public User() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2013, 11:08 |
|
||
|
Вопрос про Шаблон проектирования
|
|||
|---|---|---|---|
|
#18+
sergei123, очень похоже на proxy ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2013, 12:17 |
|
||
|
Вопрос про Шаблон проектирования
|
|||
|---|---|---|---|
|
#18+
Это паттерн "Strategy", когда вы можете формулировать различные команды классу, в том числе в зависимости от типа, в этом случае следует добавить enumerator и кинуть его в Dictionary, тогда уже можно реализовать не только ход выполнения, но и поведение, как в шаблоне "Visitor" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2013, 12:55 |
|
||
|
Вопрос про Шаблон проектирования
|
|||
|---|---|---|---|
|
#18+
skole, не совсем понял про enumerator в Dictionary. Можете привести пример? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2013, 17:20 |
|
||
|
Вопрос про Шаблон проектирования
|
|||
|---|---|---|---|
|
#18+
Код: c# 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. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2013, 21:27 |
|
||
|
Вопрос про Шаблон проектирования
|
|||
|---|---|---|---|
|
#18+
Здесь видно, как класс в зависимости от типа по разному отрабатывается, надеюсь, разберешься. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2013, 21:29 |
|
||
|
Вопрос про Шаблон проектирования
|
|||
|---|---|---|---|
|
#18+
Спасибо, немного сложно попытаюсь разобраться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2013, 00:05 |
|
||
|
Вопрос про Шаблон проектирования
|
|||
|---|---|---|---|
|
#18+
Сделай пару своих примеров, станет понятней. Такой код в книжках не пишут, это уже практический опыт, применяем полиморфизм везде, где мы сомневаемся, чтобы не ловить исключения, не фильтровать момент истины if-ами, ну и как следствие безотказный функционал с защитой от дурака и уважение в глазах коллег по цеху. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2013, 03:31 |
|
||
|
Вопрос про Шаблон проектирования
|
|||
|---|---|---|---|
|
#18+
skole, если честно запутался в вашем коде. Мне интересно как можно реализовать метод get для всех классов на основе паттерна Strategy? Код: c# 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. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2013, 11:14 |
|
||
|
Вопрос про Шаблон проектирования
|
|||
|---|---|---|---|
|
#18+
Понимаю, прыгать через ступеньку не просто, я тебе сел и написал самый простой пример, только логику. Это «Visitor», но он сильно связан подходом со «Startegy», только «Visitor» статический шаблон, в случае со «Startegy», ты динамично, в зависимости от логики приложения, формируешь логику выполнения. В основе все тот же полиморфизм, пришел класс на вход, приложение динамично генерирует сценарий выполнения операций для данного класса и отправляет на выполнение, это «Startegy». Выброси книжку, попытайся сам понять, как ты будешь строить логику для разных типов классов, вызывающих твой код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2013, 15:02 |
|
||
|
Вопрос про Шаблон проектирования
|
|||
|---|---|---|---|
|
#18+
sergei123, похоже на слушателя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2013, 15:44 |
|
||
|
Вопрос про Шаблон проектирования
|
|||
|---|---|---|---|
|
#18+
ZyK_BotaN, ты тоже внимательно читай, а то только и будешь всю жизнь лабы писать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2013, 16:17 |
|
||
|
Вопрос про Шаблон проектирования
|
|||
|---|---|---|---|
|
#18+
К сожалению visitor не решит полностью мою задачу, нужно чтобы один или несколько методов могли возвращать разные типы. В общем для этого предусмотрен factory pattern но не нашел подходящий алгоритм для этого. По гуглил, нашел вот такое: Код: c# 1. 2. 3. 4. Мне нужно так: Код: c# 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. 27. 28. 29. 30. Как это сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2013, 10:17 |
|
||
|
Вопрос про Шаблон проектирования
|
|||
|---|---|---|---|
|
#18+
A a = Object<A>.get(new A(null,"Василий","Петров",null)); // пример возвращает найденный A(123456789,"Василий","Петров"","Юрист") B b = Object<B>.get(new B(777777777,null,null)); // пример возвращает найденный B(777777777,"телевизор","JVC") Код: c# 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2013, 10:20 |
|
||
|
Вопрос про Шаблон проектирования
|
|||
|---|---|---|---|
|
#18+
Factory вполне подходит для твоей задачи. Для Factory нужно соблюдать 2 условия, 1-е, все классы должны имплементировать общий интерфейс или абстрактный класс. Интерфейс предпочтительней в логике, абстрактный класс в методах доступа. В твоем случае лучше интерфейс, например IPerson Person get;set; 2-е условие использование типа интерфейса при вызове, например, IPerson person = new Client(); или IPerson person = Worker.get(new Person) То есть, как ты написал не получиться, пока ты не приведешь класс «A» и «B» к единому интерфейсу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2013, 08:20 |
|
||
|
Вопрос про Шаблон проектирования
|
|||
|---|---|---|---|
|
#18+
А прости, не обратил внимание, что у тебя уже есть общий интерфейс, ну, тогда все условия соблюдены. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2013, 08:27 |
|
||
|
Вопрос про Шаблон проектирования
|
|||
|---|---|---|---|
|
#18+
Тогда, следовательно, Client тоже должен наследовать этот интерфейс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2013, 08:28 |
|
||
|
Вопрос про Шаблон проектирования
|
|||
|---|---|---|---|
|
#18+
Спасибо разобрался как все сделать. Вопрос, а можно ли считать что тут реализованы два паттерна, strategy и factory? при условии что class Client тоже наследует interface Object. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2013, 08:55 |
|
||
|
Вопрос про Шаблон проектирования
|
|||
|---|---|---|---|
|
#18+
Конечно нет, это две разные концепции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2013, 09:17 |
|
||
|
Вопрос про Шаблон проектирования
|
|||
|---|---|---|---|
|
#18+
«Strategy» это набор методов. Представь, в твою программу приходят текстовые сообщения, которые надо парсить по разному. У тебя несколько методов парсера, с приходом каждого сообщения, ты определяешь тип и собираешь в коллекцию набор методов парсера, которые необходимо провести. Вот и все, прога сама разбирает тип и генерирует сценарий команд, которые позже, например в другом потоке парсяться согласно сценарию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2013, 09:22 |
|
||
|
Вопрос про Шаблон проектирования
|
|||
|---|---|---|---|
|
#18+
Разумеется «Strategy» можно применить и к «Factory», но в «Factory» для этого предназначен интерфейс. Так например сделан Entity Framework ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2013, 09:24 |
|
||
|
Вопрос про Шаблон проектирования
|
|||
|---|---|---|---|
|
#18+
sergei123Здравствуйте Могли бы вы определить если данный код(написанный мной) на c# может относится к какому ту шаблону проектирования(design pattern)? Код: c# 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. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. Цель кода, позволить юзеру давать приказы на выполнения команд не имея к ним отношения. Ты лучше словами сформулируйте, что от класса надо, чем какой то непонятный код постить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2013, 10:52 |
|
||
|
|

start [/forum/topic.php?fid=16&tid=1341807]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
150ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 468ms |

| 0 / 0 |
