Java设计模式图:深入理解设计模式
在软件开发中,设计模式是一种被反复使用、经过分类的代码设计经验的总结。使用设计模式可以解决软件设计中一些常见问题,提高代码的可复用性、可维护性和灵活性。本文将通过Java设计模式图,深入理解设计模式,并提供代码示例。
设计模式的分类
设计模式主要分为三大类:
- 创建型模式:用于创建对象,同时隐藏创建逻辑,使系统在运行时更加灵活。
- 结构型模式:用于处理类和对象的组合,形成更大的结构。
- 行为型模式:用于描述类和对象如何交互,以及如何分配职责。
创建型模式
创建型模式包括单例模式、工厂方法模式、抽象工厂模式、建造者模式和原型模式。以下是单例模式的代码示例:
public class Singleton {
private static Singleton instance;
private Singleton() {
}
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
结构型模式
结构型模式包括适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式和享元模式。以下是装饰器模式的代码示例:
public interface Component {
void operate();
}
public class ConcreteComponent implements Component {
@Override
public void operate() {
System.out.println("ConcreteComponent operate");
}
}
public abstract class Decorator implements Component {
protected Component component;
public Decorator(Component component) {
this.component = component;
}
@Override
public void operate() {
component.operate();
}
}
public class ConcreteDecoratorA extends Decorator {
public ConcreteDecoratorA(Component component) {
super(component);
}
@Override
public void operate() {
super.operate();
addedBehavior();
}
private void addedBehavior() {
System.out.println("ConcreteDecoratorA added behavior");
}
}
行为型模式
行为型模式包括策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式和备忘录模式。以下是观察者模式的代码示例:
public interface Observer {
void update();
}
public interface Subject {
void registerObserver(Observer o);
void removeObserver(Observer o);
void notifyObservers();
}
public class ConcreteSubject implements Subject {
private List<Observer> observers = new ArrayList<>();
@Override
public void registerObserver(Observer o) {
observers.add(o);
}
@Override
public void removeObserver(Observer o) {
observers.remove(o);
}
@Override
public void notifyObservers() {
for (Observer observer : observers) {
observer.update();
}
}
}
public class ConcreteObserver implements Observer {
private ConcreteSubject subject;
public ConcreteObserver(ConcreteSubject subject) {
this.subject = subject;
}
@Override
public void update() {
System.out.println("ConcreteObserver update");
}
}
项目进度
以下是项目进度的甘特图:
gantt
title 项目进度
dateFormat YYYY-MM-DD
section 设计模式学习
创建型模式 :done, des1, 2023-03-01,2023-03-05
结构型模式 :done, des2, after des1, 3d
行为型模式 :done, des3, after des2, 3d
关系图
以下是创建型模式、结构型模式和行为型模式之间的关系图:
erDiagram
CREATETYPE ||--o| SINGLETON
CREATETYPE ||--o| FACTORYMETHOD
CREATETYPE ||--o| ABSTRACTFACTORY
CREATETYPE ||--o| BUILDER
CREATETYPE ||--o| PROTOTYPE
STRUCTURETYPE ||--o| ADAPTER
STRUCTURETYPE ||--o| DECORATOR
STRUCTURETYPE ||--o| PROXY
STRUCTURETYPE ||--o| FACADE
STRUCTURETYPE ||--o| BRIDGE
STRUCTURETYPE ||--o| COMPOSITE
STRUCTURETYPE ||--o| FLYWEIGHT
BEHAVIORTYPE ||--o| STRATEGY
BEHAVIORTYPE ||--o| TEMPLATEMETHOD
BEHAVIORTYPE ||--o| OBSERVER
BEHAVIORTYPE ||--o| ITERATOR
BEHAVIORTYPE ||--o| CHAINRESPONSIBILITY
BEHAVIORTYPE ||--o| COMMAND
BEHAVIORTYPE ||--o| MEMENTO