Дизайн модели в Ява
Сигурен съм, че всеки програмист чували фразата "дизайнерски модели" (или модели). Ако съвсем накратко - описание на проблемите, които възникват, когато пишете обектно-ориентиран код, както и примери за решения на тези проблеми.
Но, както някой мъдър каза: - модели, необходими за подпомагане реализират една идея, а не за да се вмести в рамките на идеята за определен модел.
Надявам се, че моята поредица от статии ще ви помогне да се разхладите в използването на модели и по този начин се разширява познанията им за освобождение на Палестина.
Като основа вземем каталог на модели от книгата на GOF - Design Patterns. И тогава как ще върви :).
Във всяка статия, аз ще се опитам:
- обясни защо даден модел се нуждае;
- дам един пример за използването му, доколкото е възможно, от действителните Java проекти, в които участвах;
- разкажа за характеристиките, митовете и капани;
- посочите къде да се намери модела в изпълнението на JDK.
Модели създават обекти
Първата група - това е творческия модели. Те са в различна степен, работим с механизмите на създаване на обекти.
- Singleton - да осигури наличието на системата точно една инстанция на класа;
- Фабрика Метод - възлага на процеса на създаване на обекти, получени клас;
- Prototype - клонинг обекти въз основа на база обект;
- Builder - разделяне на процеса на създаване на комплекс само от неговото представяне;
- Abstract Factory - да се опише същността, за да създадете цели семейства от свързани обекти.
структурни модели
Втората група - структурни модели (структурни). Те описват създаването на по-сложни обекти, или да го направи по-лесно да се работи с други предмети, рециркулация.
- Адаптер - въз основа на един клас да се създаде необходимия интерфейс на клиентската програма;
- Фасада - описване на единен интерфейс за лесна работа с набор от под-системи;
- Composite - работи с основата и съставни обекти в единна начин;
- Декоратор - динамично добавяне на нова функционалност към определен обект, запазвайки своя интерфейс;
- Proxy - създаде обект, който приема повиквания към друг обект;
- Bridge - ние споделяме черпене на интерфейса, което им позволява да се променя независимо;
- Flyweight - работи ефективно с по-голям брой подобни обекти.
Поведенческите модели дизайн
И накрая, третата група - поведенческите модели (поведенчески). Те се определят ефективни начини за взаимодействие на различни обекти в системата.
- Стратегия - описва набор от сменяеми алгоритми с единен интерфейс;
- Итераторът - осигуряване на достъп до колекции от предмети, без да се излага на вътрешната структура на тези колекции;
- Наблюдател - създаде обект за проследяване на промените в подсистемата за уведомяване и други подсистеми;
- Memento - дръжте вътрешното състояние на обекта за по-нататъшна употреба, без да нарушават капсулиране;
- Команда - описват обект представлява действие, което може да се извърши в желания момент;
- Преводач - определяне на методиката за изчисляване на изрази на езика;
- Посредник - създаде обект, който контролира взаимодействие между набор от подсистеми;
- Членка - позволява обекти, за да променят поведението си при смяна на вътрешното си състояние;
- метод Шаблон - ние описваме алгоритъм определяне на прилагането на някои части на алгоритъма на подкласове;
- Visitor - разглобяема от структурата на алгоритъма, който алгоритъм работи;
- Верига на отговорност - пропуснете някои заявки чрез набор от обработват събитие, докато молбата е била обработена.
antipattern дизайн
Мисля, че е важно да се знае не само добър начин за решаване на проблемите, но и грешки в решаването им.
- константи за интерфейс - използва Java интерфейс за други цели;
- Vresennaya сложност - добавяне на ненужни лица в йерархията на класа.
Смята се, че е необходимо за някои от моделите, причинени от липсата на конкретен език за програмиране. Може би това е така, но тъй като ние сме с помощта на езика не предоставя родния начин за решаване на проблема, тогава защо да не се идеята, че някой вече е тествана и е значително по-ефективен, ако не е оптимално.