设计模式概述

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

大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将深入探讨《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程序。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值