Java设计模式PDF清华大学出版社
设计模式是软件开发中一种被广泛应用的方法,它提供了一种通用的解决方案,帮助我们解决常见的设计问题。《Java设计模式》是一本由清华大学出版社出版的经典书籍,其中详细介绍了23种常见的设计模式,并提供了大量的示例代码和应用场景。
什么是设计模式
设计模式是在软件开发中经常出现的一些问题的解决方案。它提供了一种通用的解决方案,可以帮助我们更好地编写可复用、可维护和可扩展的代码。设计模式可以分为三种类型:创建型模式、结构型模式和行为型模式。
创建型模式
创建型模式关注对象的创建过程,它们包括工厂模式、抽象工厂模式、单例模式、建造者模式和原型模式等。下面我们以工厂模式为例,看看它的代码示例。
// 工厂接口
public interface ShapeFactory {
Shape createShape();
}
// 圆形工厂
public class CircleFactory implements ShapeFactory {
@Override
public Shape createShape() {
return new Circle();
}
}
// 正方形工厂
public class SquareFactory implements ShapeFactory {
@Override
public Shape createShape() {
return new Square();
}
}
// 形状接口
public interface Shape {
void draw();
}
// 圆形类
public class Circle implements Shape {
@Override
public void draw() {
System.out.println("Drawing a circle");
}
}
// 正方形类
public class Square implements Shape {
@Override
public void draw() {
System.out.println("Drawing a square");
}
}
结构型模式
结构型模式关注对象之间的组合,它们包括适配器模式、装饰器模式、代理模式、桥接模式、组合模式、外观模式和享元模式等。下面我们以代理模式为例,看看它的代码示例。
// 主题接口
public interface Subject {
void request();
}
// 真实主题
public class RealSubject implements Subject {
@Override
public void request() {
System.out.println("Real subject is handling the request");
}
}
// 代理
public class Proxy implements Subject {
private RealSubject realSubject;
@Override
public void request() {
if (realSubject == null) {
realSubject = new RealSubject();
}
realSubject.request();
}
}
行为型模式
行为型模式关注对象之间的通信,它们包括模板方法模式、策略模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式和中介者模式等。下面我们以策略模式为例,看看它的代码示例。
// 策略接口
public interface Strategy {
void execute();
}
// 具体策略A
public class ConcreteStrategyA implements Strategy {
@Override
public void execute() {
System.out.println("Executing strategy A");
}
}
// 具体策略B
public class ConcreteStrategyB implements Strategy {
@Override
public void execute() {
System.out.println("Executing strategy B");
}
}
// 上下文
public class Context {
private Strategy strategy;
public Context(Strategy strategy) {
this.strategy = strategy;
}
public void executeStrategy() {
strategy.execute();
}
}
类图
下面是一个简单的类图,展示了工厂模式、代理模式和策略模式的类之间的关系。
classDiagram
class Shape
class Circle
class Square
class ShapeFactory
class CircleFactory
class SquareFactory
Shape <|-- Circle
Shape <|-- Square
ShapeFactory <|-- CircleFactory
ShapeFactory <|-- SquareFactory
class Subject
class RealSubject
class Proxy
Subject <|-- RealSubject
Subject <|-- Proxy
class Strategy
class ConcreteStrategyA
class ConcreteStrategyB