Основной режим:
1. Шаблон интерфейса. Когда несколько классов предоставляют схожие услуги, с помощью шаблона интерфейса общие службы, предоставляемые разными классами поставщиков услуг, можно абстрагировать и объявить как независимый интерфейс. Это позволяет клиентским объектам беспрепятственно использовать различные классы поставщиков услуг без каких-либо изменений.
2. Шаблон абстрактного класса: может использоваться для разработки структуры, обеспечивающей согласованную реализацию общих функций набора связанных классов. В отличие от интерфейсов, методы интерфейсов должны быть реализованы в подклассах. Необходимые методы могут быть реализованы в абстрактных классах, а подклассы должны только наследовать, что сокращает количество избыточных реализаций методов.
3. Шаблон частного метода. Некоторые методы могут использоваться только внутри других методов или внутренних классов того же объекта. Этот шаблон рекомендует разрабатывать такие методы как частные методы.
4. Шаблон доступа: в объекте все переменные экземпляра объявляются частными, а общедоступные методы доступа предоставляются для доступа к общедоступному состоянию объекта; клиенты могут изменять объект из одного состояния в другое, используя методы доступа в другом состоянии; объект имеет прямой доступ к своим частным переменным. JavaBean в JSP использует этот шаблон.
5. Менеджер постоянных данных: очень подходит для разработки эффективного механизма хранения для управления постоянными данными, используемыми различными объектами в приложении. Этот шаблон предполагает, что данные, значения которых являются постоянными в приложении, следует хранить в отдельном объекте для доступа других объектов приложения, а не разрешать появление в разных объектах. Этот тип разделения обеспечивает простое в обслуживании централизованное хранилище постоянных данных вашего приложения.
6. Неизменяемые объекты: установите все переменные экземпляра в конструкторе и не предоставляйте никаких других методов, которые могут изменить состояние объекта, объявив класс как фанатический тип, чтобы предотвратить возможность изменения состояния путем переопределения методов класса; Все переменные экземпляра записываются как fanal-тип, поэтому их можно присваивать только с помощью метода конструктора. Если какая-либо из переменных экземпляра содержит ссылку на объект, то соответствующий метод get inggai возвращает копию объекта вместо Really the; сам объект. Вышеупомянутый механизм может обеспечить потокобезопасность и автоматически устранить все проблемы, связанные с одновременным доступом.
7. Монитор: он блокирует такой объект, чтобы гарантировать, что только одному потоку разрешено одновременно выполнять любой метод объекта. Это можно сделать в Java, используя ключевое слово Synchronized в объявлении метода объекта.
Режим создания:
Роль: выполняет одну из наиболее часто выполняемых задач в объектно-ориентированных приложениях — создание объектов; поддерживает использование последовательных, простых механизмов с ограничениями для создания объектов; позволяет инкапсулировать сведения о том, какие классы и как создавать экземпляры поддерживают использование интерфейсов для сокращения; Генерация связи.
1. Фабричный метод. Если клиентский объект не знает, экземпляр какого класса создавать, он может использовать фабричный метод для создания экземпляра соответствующего класса в иерархии классов или связанной группе классов. Фабричные методы могут быть разработаны как часть самого клиента или в отдельных классах. Среди них класс, содержащий фабричный метод или любой из его подклассов, определяет, какой класс выбран и как его создать.
2. Синглтон: предоставляет механизм создания ограниченных объектов, гарантирующий наличие только одного экземпляра указанного класса.
3. Абстрактная фабрика: позволяет создавать экземпляры классов в наборе связанных классов без указания клиентским объектом фактического конкретного класса, экземпляр которого необходимо создать.
4. Прототип. Обеспечивает простой способ создания объектов, то есть копирование объектов из существующих объектов.
5. Генератор: позволяет создавать сложные объекты, может предоставлять только информацию о типе и содержимом объекта и делает детали создания объекта прозрачными для клиента. Этот подход позволяет одному и тому же процессу построения генерировать разные представления объектов.