Если у меня есть ограниченное время для изучения нескольких шаблонов разработки, которые я должен учиться?

Настоятельно рекомендуем вам использовать решение , предоставленное Дарином выше, если это возможно; Таким образом, вы можете повторно использовать хорошо проверенный код для построения POST данных.

Но если вам действительно нужно использовать конкатенацию строк (здесь или в другом месте вашего приложения при построении строк запроса или POST данных из пользовательских данных), вам нужно использовать encodeURIComponent :

$("textarea").blur(function(){
   var thisId = $(this).attr("id");
   var thisValue = $(this).val();

   $.ajax({
      type: "POST",
      url: "some.php",
      data: "id=" + encodeURIComponent(thisId) + "&value=" + encodeURIComponent(thisValue),
      success: function(){
        alert( "Saved successfully!" );
      }
   });
});

По умолчанию при отправке POST с jQuery.ajax вы отправляете данные с типом контента application/x-www-form-urlencoded , что означает, что вы обещая, что данные закодированы таким образом. Вы должны быть уверены, что сохранили свою часть сделки и фактически закодировали ее. Это не просто важно для амперсандов.

12
задан Jonathan Leffler 24 May 2009 в 02:52
поделиться

13 ответов

I'd suggest Inversion of Control/Dependency Injection. This comes in very handy when unit testing as it enables you to supply mock dependencies for the class under test. Proxy is also very useful when wrapping a sealed class to make it more usable in testing scenarios.

If I make another suggestion, I would focus on learning which patterns are useful in different situations rather than focusing on learning how to implement a particular pattern. You can almost always find a reference implementation to use when implementing a pattern, but being able to discern when and which pattern to use will make the patterns more useful. If you start going about it the other way, you end up making your problem fit the patterns you know rather than applying the correct pattern that fits the problem.

19
ответ дан 2 December 2019 в 03:12
поделиться

Why not read a summary of them, this summary for example, and see whether some look like they might be useful to you, and worth investigating further.

7
ответ дан 2 December 2019 в 03:12
поделиться

Шаблоны проектирования - это не та тема, которую вы быстро начинаете читать и изучать. Вам придется выполнить множество упражнений, а затем применить полученные знания в реальных сценариях. Если ваше время действительно так ограничено, возможно, вы зря тратите время. Я предлагаю книгу Head First Design Patterns , она превосходна.

Но ваши знания объектно-ориентированного программирования должны быть на довольно высоком уровне для начала.

6
ответ дан 2 December 2019 в 03:12
поделиться

Your question is like asking, "I want to learn C# but only have time to learn a few keywords. Which ones should I learn?"

Any one design pattern doesn't live in a vacuum. They all define different aspects of how an application goes together. It's unlikely that any one app needs all of the known design patterns, but every app is different and you'll need a different combination of them for each app. Knowing what not to use is as important as knowing what to use. You need at least a conversational knowledge of all of the primary design patterns.

Start with this list and the Head First Design Patterns book previously mentioned here. Learn a little about all of them. And don't bellyache about not having the time--make the time! Stay outta FaceBook a couple of extra nights or skip a Star Trek rerun or two.

Also, avoid at first the GoF patterns book unless you are truly an OO guru. It is quite dense and immediately asssumes you understand the value and need for patterns. It's a great book, just not a great first book.

6
ответ дан 2 December 2019 в 03:12
поделиться

Я думаю, что полезность шаблонов проектирования заключается больше в добавленном словарном запасе, который их сопровождает, в большей степени, чем в использовании один (или пара) шаблонов. Знание общих паттернов из книги «Банда четырех» чрезвычайно полезно при попытках общения с другими разработчиками.

Я бы посоветовал прочитать Оглавление, а затем прочитать сводку каталога паттернов. Если вы ограничены во времени, было бы полезно знать в общих чертах, что символизируют узоры, чтобы, когда вам НУЖНО знать детали узора, вы знали, где искать. Это в отличие от знания паттернов State или Singleton на их собственных маленьких островках.

4
ответ дан 2 December 2019 в 03:12
поделиться

Стратегия в моем списке. Это отличный способ избавить ваш код от условной логики, которая существует только для поддержки нескольких способов выполнения действий, и помогает извлечь код «политики», чтобы его можно было тестировать изолированно.

1
ответ дан 2 December 2019 в 03:12
поделиться

Шаблон «Команда» немного сложнее, чем Абстрактная фабрика, но обычно используется и мощный.

Еще один шаблон, который у меня никогда не было возможности использовать, это узор "Составной". Это даст вам хорошее представление о методах объектно-ориентированного программирования и может оказаться полезным, если вы когда-нибудь столкнетесь с необходимостью в этом.

1
ответ дан 2 December 2019 в 03:12
поделиться

Абстрактная фабрика . Используется при внедрении зависимостей (DI).
Если вы это понимаете, вы знаете, как DI работает в основном, и тогда вы знаете, что такое инверсия управления.

2
ответ дан 2 December 2019 в 03:12
поделиться

Я думал, что «Легковес» - это очень крутой паттерн, который действительно не имеет никакого отношения ни к чему другому. (То есть, вы бы никогда не решили использовать на этом месте другой шаблон.)

Но если вы собираетесь изучить только один шаблон, вам нужен «Посетитель». Эта концепция выходит далеко за рамки объектно-ориентированного программирования; это поможет вам понять концепции функционального программирования, такие как map и fold . Или даже такие ОО-методы, как собрать и ввести .

1
ответ дан 2 December 2019 в 03:12
поделиться

Singleton is used very very heavily in many places. The Adapter pattern is also very frequently used. Those two are among the most frequently used, and are relatively simple; understanding them can be helpful to understanding patterns, and can be useful for your development.

0
ответ дан 2 December 2019 в 03:12
поделиться

Я всегда лично чувствовал, что вы не «изучаете» шаблоны проектирования ... вы учитесь «узнавать» их. Другими словами, когда я впервые прочитал «Паттерны проектирования», многие из них казались решениями, которые просто выпадали естественным образом в приложениях, которые я создавал раньше, но, возможно, я не делал это точно так же или так чисто.

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

1
ответ дан 2 December 2019 в 03:12
поделиться
0
ответ дан 2 December 2019 в 03:12
поделиться

Книга GoF (Банда четырех) рекомендует это в качестве начала: (в «Руководстве для читателей» в книге)

Начните с самого простого и наиболее общие шаблоны:

  1. Абстрактная фабрика
  2. Адаптер
  3. Составной
  4. Декоратор
  5. Фабричный метод
  6. Наблюдатель
  7. Стратегия
  8. Шаблонный метод
1
ответ дан 2 December 2019 в 03:12
поделиться