Java 23种设计模式
简介
设计模式是一套被广泛应用于软件开发领域的最佳实践方法,它们能够提供可重用、可靠和灵活的解决方案。Java 23种设计模式分为三个大类:创建型模式、结构型模式和行为型模式。本文将介绍如何使用Java实现这些设计模式。
流程
下面的表格展示了实现“Java 23种设计模式”的整个流程:
journey
title Java 23种设计模式实现流程
section 创建型模式
创建SimpleFactory类
创建Factory接口
创建具体的Product类
section 结构型模式
创建Adapter类
创建Bridge类
创建Decorator类
section 行为型模式
创建Observer类
创建Strategy类
创建Command类
创建型模式
Simple Factory
首先,我们来实现Simple Factory(简单工厂)模式。这个模式提供了一个简单的工厂类,它根据不同的条件创建不同的对象。
public class SimpleFactory {
public static Product createProduct(String type) {
if (type.equals("A")) {
return new ConcreteProductA();
} else if (type.equals("B")) {
return new ConcreteProductB();
}
return null;
}
}
public interface Product {
void doSomething();
}
public class ConcreteProductA implements Product {
@Override
public void doSomething() {
System.out.println("Doing something in ConcreteProductA");
}
}
public class ConcreteProductB implements Product {
@Override
public void doSomething() {
System.out.println("Doing something in ConcreteProductB");
}
}
Factory Method
接下来,我们实现Factory Method(工厂方法)模式。这个模式定义了一个创建对象的接口,但由子类决定实例化哪个类。
public interface Factory {
Product createProduct();
}
public class ConcreteFactoryA implements Factory {
@Override
public Product createProduct() {
return new ConcreteProductA();
}
}
public class ConcreteFactoryB implements Factory {
@Override
public Product createProduct() {
return new ConcreteProductB();
}
}
Abstract Factory
下面是Abstract Factory(抽象工厂)模式的实现。这个模式提供了一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。
public interface AbstractFactory {
ProductA createProductA();
ProductB createProductB();
}
public interface ProductA {
void doSomething();
}
public interface ProductB {
void doSomething();
}
public class ConcreteFactory1 implements AbstractFactory {
@Override
public ProductA createProductA() {
return new ConcreteProductA1();
}
@Override
public ProductB createProductB() {
return new ConcreteProductB1();
}
}
public class ConcreteFactory2 implements AbstractFactory {
@Override
public ProductA createProductA() {
return new ConcreteProductA2();
}
@Override
public ProductB createProductB() {
return new ConcreteProductB2();
}
}
结构型模式
Adapter
接下来,我们来实现Adapter(适配器)模式。这个模式将一个类的接口转换成客户希望的另一个接口。
public interface Target {
void request();
}
public class Adaptee {
public void specificRequest() {
System.out.println("Specific request in Adaptee");
}
}
public class Adapter implements Target {
private Adaptee adaptee;
public Adapter(Adaptee adaptee) {
this.adaptee = adaptee;
}
@Override
public void request() {
adaptee.specificRequest();
}
}
Bridge
下面是Bridge(桥接)模式的实现。这个模式将抽象与实现分离,使它们可以独立地变化。
public interface Implementor {
void operationImpl();
}
public class ConcreteImplementorA implements Implementor {
@Override
public void operationImpl() {
System.out.println("Implementation A");
}
}
public class ConcreteImplementorB implements Implementor {
@Override
public void operationImpl() {
System.out.println("Implementation B");
}
}
public abstract class Abstraction {
protected Implementor implementor;
public Abstraction(Implementor implementor) {
this.implementor = implement
















