设计模式概述

简介: 设计模式概述

Head First设计模式详解与应用场景分析

今天我们将深入探讨《Head First设计模式》这本经典著作中介绍的设计模式,以及它们在实际应用中的场景分析。


设计模式概述

设计模式是解决软件设计中常见问题的可重用解决方案。它们由经验丰富的开发者总结和提炼,能够帮助开发者构建更加灵活、可维护和可扩展的软件系统。《Head First设计模式》一书系统地介绍了23种经典的设计模式,分为三大类:创建型模式、结构型模式和行为型模式。

创建型模式

工厂模式(Factory Pattern)

工厂模式用于创建对象,而不需要指定具体类的类型。它包括简单工厂模式、工厂方法模式和抽象工厂模式。下面是一个简单工厂模式的示例:

package cn.juwatech.designpatterns.factory;
// 抽象产品
interface Shape {
    void draw();
}
// 具体产品1
class Circle implements Shape {
    @Override
    public void draw() {
        System.out.println("画一个圆形");
    }
}
// 具体产品2
class Rectangle implements Shape {
    @Override
    public void draw() {
        System.out.println("画一个矩形");
    }
}
// 简单工厂
class ShapeFactory {
    public Shape createShape(String shapeType) {
        if ("circle".equalsIgnoreCase(shapeType)) {
            return new Circle();
        } else if ("rectangle".equalsIgnoreCase(shapeType)) {
            return new Rectangle();
        }
        return null;
    }
}
// 客户端代码
public class FactoryPatternDemo {
    public static void main(String[] args) {
        ShapeFactory factory = new ShapeFactory();
        Shape shape1 = factory.createShape("circle");
        shape1.draw();
        Shape shape2 = factory.createShape("rectangle");
        shape2.draw();
    }
}

结构型模式

适配器模式(Adapter Pattern)

适配器模式用于将一个类的接口转换成客户端所期望的另一个接口。它通常用于旧系统与新系统的兼容,或者接口不兼容的情况。以下是适配器模式的示例:

package cn.juwatech.designpatterns.adapter;
// 目标接口
interface Target {
    void request();
}
// 需要适配的类
class Adaptee {
    public void specificRequest() {
        System.out.println("适配者中的业务逻辑代码被调用");
    }
}
// 适配器
class Adapter implements Target {
    private Adaptee adaptee;
    public Adapter(Adaptee adaptee) {
        this.adaptee = adaptee;
    }
    @Override
    public void request() {
        adaptee.specificRequest();
    }
}
// 客户端代码
public class AdapterPatternDemo {
    public static void main(String[] args) {
        Adaptee adaptee = new Adaptee();
        Target target = new Adapter(adaptee);
        target.request();
    }
}

行为型模式

观察者模式(Observer Pattern)

观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。主题对象在状态变化时会通知所有的观察者对象。以下是观察者模式的示例:

package cn.juwatech.designpatterns.observer;
import java.util.ArrayList;
import java.util.List;
// 主题接口
interface Subject {
    void registerObserver(Observer observer);
    void removeObserver(Observer observer);
    void notifyObservers();
}
// 具体主题
class ConcreteSubject implements Subject {
    private List<Observer> observers = new ArrayList<>();
    private int state;
    public int getState() {
        return state;
    }
    public void setState(int state) {
        this.state = state;
        notifyObservers();
    }
    @Override
    public void registerObserver(Observer observer) {
        observers.add(observer);
    }
    @Override
    public void removeObserver(Observer observer) {
        observers.remove(observer);
    }
    @Override
    public void notifyObservers() {
        for (Observer observer : observers) {
            observer.update();
        }
    }
}
// 观察者接口
interface Observer {
    void update();
}
// 具体观察者
class ConcreteObserver implements Observer {
    private ConcreteSubject subject;
    public ConcreteObserver(ConcreteSubject subject) {
        this.subject = subject;
        this.subject.registerObserver(this);
    }
    @Override
    public void update() {
        System.out.println("观察者收到主题状态变化通知,新状态为:" + subject.getState());
    }
}
// 客户端代码
public class ObserverPatternDemo {
    public static void main(String[] args) {
        ConcreteSubject subject = new ConcreteSubject();
        Observer observer1 = new ConcreteObserver(subject);
        Observer observer2 = new ConcreteObserver(subject);
        subject.setState(10);
    }
}

总结

通过本文,我们深入学习了《Head First设计模式》中的几种经典设计模式,并通过代码示例演示了它们的基本实现和应用场景。设计模式是软件开发中的重要工具,能够提高代码的复用性、可读性和可维护性。希望本文能够帮助您理解和应用设计模式,在实际项目中编写更加健壮和灵活的Java程序。


相关文章
|
10月前
|
设计模式 算法 程序员
设计模式的概述及各个模式的功能介绍
设计模式的概述及各个模式的功能介绍
97 0
|
2月前
|
设计模式 数据可视化 测试技术
设计模式概述
设计模式概述
设计模式概述
|
8天前
|
设计模式 算法 Java
Java设计模式:核心概述(一)
Java设计模式:核心概述(一)
|
2月前
|
设计模式 缓存 算法
设计模式概述
设计模式概述
43 0
|
2月前
|
设计模式 安全
设计模式概述
设计模式概述
33 0
|
9月前
|
设计模式 数据可视化 程序员
设计模式概述、UML图、软件设计原则
设计模式概述 软件设计模式的产生背景 "设计模式"最初并不是出现在软件设计中,而是被用于建筑领域的设计中。 1977年美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任克里斯托夫·亚历山大(Christopher Alexander)在他的著作《建筑模式语言:城镇、建筑、构造》中描述了一些常见的建筑设计问题,并提出了 253 种关于对城镇、邻里、住宅、花园和房间等进行设计的基本模式。 1990年软件工程界开始研讨设计模式的话题,后来召开了多次关于设计模式的研讨会。直到1995 年,艾瑞克·伽马(ErichGamma)、理査德·海尔姆(Richard Helm)、拉尔夫·约翰森(Ra
54 0
|
11月前
|
设计模式 算法 程序员
设计模式之设计模式概述
设计模式之设计模式概述
82 0
|
设计模式 开发框架 算法
设计模式概述以及 23种设计模式的介绍
设计模式概述以及 23种设计模式的介绍
398 0
设计模式概述以及 23种设计模式的介绍
|
设计模式 开发框架 算法
【Java设计模式 设计模式与范式】设计模式概述、基本原则及分类
【Java设计模式 设计模式与范式】设计模式概述、基本原则及分类
53 0
|
设计模式 uml
设计模式——概述、UML图、原则(二)
设计模式——概述、UML图、原则
162 0
设计模式——概述、UML图、原则(二)