Паттерны проектирования — это проверенные и широко используемые решения для распространенных проблем, возникающих в процессе проектирования программного обеспечения. Они представляют собой шаблоны, которые можно адаптировать и применять в различных ситуациях.
В Java существует множество паттернов проектирования, которые можно разделить на три основных типа:
-
Порождающие паттерны: Эти паттерны связаны с процессом создания объектов и обеспечивают гибкость и повторное использование кода. Примеры таких паттернов: Singleton, Factory Method, Abstract Factory, Builder, Prototype.
-
Структурные паттерны: Они определяют способы композиции классов и объектов для создания новых структур. Примеры структурных паттернов: Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy.
-
Поведенческие паттерны: Эти паттерны определяют взаимодействие между объектами и облегчают обмен информацией между ними. Примеры поведенческих паттернов: Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method, Visitor.
Примеры паттернов проектирования в Java
Давайте рассмотрим некоторые популярные паттерны проектирования на примерах Java-кода.
Singleton
Singleton — это порождающий паттерн, который гарантирует, что класс имеет только один экземпляр и предоставляет глобальную точку доступа к этому экземпляру.
public class Singleton {
private static Singleton instance;
private Singleton() {
}
public static synchronized Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
Adapter
Adapter — это структурный паттерн, который позволяет объектам с несовместимыми интерфейсами работать вместе.
interface EuropeanPlug {
void useEuropeanPlug();
}
class BritishPlug {
void useBritishPlug() {
System.out.println("Using British plug");
}
}
class PlugAdapter implements EuropeanPlug {
private BritishPlug britishPlug;
public PlugAdapter(BritishPlug britishPlug) {
this.britishPlug = britishPlug;
}
@Override
public void useEuropeanPlug() {
britishPlug.useBritishPlug();
}
}
Observer
Observer — это поведенческий паттерн, который определяет отношение «один-ко-многим» между объектами. Когда один объект (субъект) изменяется, все зависимые объекты (наблюдатели) уведомляются об этом и автоматически обновляются.
import java.util.ArrayList;
import java.util.List;
interface Observer {
void update(String news);
}
class NewsChannel implements Observer {
private String news;
@Override
public void update(String news) {
this.news = news;
System.out.println("News updated: " + news);
}
}
class NewsAgency {
private List<Observer> observers = new ArrayList<>();
public void addObserver(Observer observer) {
observers.add(observer);
}
public void removeObserver(Observer observer) {
observers.remove(observer);
}
public void notifyObservers(String news) {
for (Observer observer : observers) {
observer.update(news);
}
}
}
Использование паттернов проектирования в Java помогает создавать гибкие, масштабируемые и понятные системы. Изучение этих паттернов является важным шагом в становлении опытным Java-разработчиком. 😊
Перейти в телеграм, чтобы получить результаты теста



Забрать
Добавить комментарий