首页 / 值得一看 / 正文

常用设计模式 Java 实现

2023-08-21值得一看阅读 590

常用设计模式 Java 实现

设计模式是一种被广泛应用于软件开发中的解决问题的方法。它们是在实践中总结出来的,可以帮助我们构建可维护、可扩展和可重用的代码。本文将介绍一些常用的设计模式,并给出相应的 Java 实现。

1. 工厂模式(Factory Pattern)

工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。它通过使用一个共同的接口或基类来隐藏对象的实例化逻辑。

public interface Shape {
    void draw();
}
public class Rectangle implements Shape {
    public void draw() {
        System.out.println("Inside Rectangle::draw() method.");
    }
}
public class Square implements Shape {
    public void draw() {
        System.out.println("Inside Square::draw() method.");
    }
}
public class Circle implements Shape {
    public void draw() {
        System.out.println("Inside Circle::draw() method.");
    }
}
public class ShapeFactory {
    public Shape getShape(String shapeType) {
        if (shapeType == null) {
            return null;
        }
        if (shapeType.equalsIgnoreCase("RECTANGLE")) {
            return new Rectangle();
        } else if (shapeType.equalsIgnoreCase("SQUARE")) {
            return new Square();
        } else if (shapeType.equalsIgnoreCase("CIRCLE")) {
            return new Circle();
        }
        return null;
    }
}

上面的代码演示了一个简单的工厂模式实现。工厂类 ShapeFactory 根据传入的类型参数来创建对应的对象。这样,客户端就可以通过调用工厂方法 getShape 来获取需要的对象,而不需要关心具体的实例化过程。

2. 单例模式(Singleton Pattern)

单例模式是一种创建型设计模式,它保证一个类只有一个实例,并提供了全局访问点。

public class Singleton {
    private static Singleton instance;
    private Singleton() {}
    public static Singleton getInstance() {
        if (instance == null) {
            synchronized (Singleton.class) {
                if (instance == null) {
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }
}

上面的代码演示了一个线程安全的懒汉式单例模式实现。getInstance 方法通过双重检查锁定的方式确保只有在第一次调用时才创建实例。

3. 观察者模式(Observer Pattern)

观察者模式是一种行为型设计模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个目标对象,当目标对象发生改变时,会通知所有的观察者对象。

import java.util.ArrayList;
import java.util.List;
public class Subject {
    private Listobservers = new ArrayList<>();
    private int state;
    public int getState() {
        return state;
    }
    public void setState(int state) {
        this.state = state;
        notifyAllObservers();
    }
    public void attach(Observer observer) {
        observers.add(observer);
    }
    public void notifyAllObservers() {
        for (Observer observer : observers) {
            observer.update();
        }
    }
}
public abstract class Observer {
    protected Subject subject;
    public abstract void update();
}
public class BinaryObserver extends Observer {
    public BinaryObserver(Subject subject) {
        this.subject = subject;
        this.subject.attach(this);
    }
    public void update() {
        System.out.println("Binary String: " + Integer.toBinaryString(subject.getState()));
    }
}
public class OctalObserver extends Observer {
    public OctalObserver(Subject subject) {
        this.subject = subject;
        this.subject.attach(this);
    }
    public void update() {
        System.out.println("Octal String: " + Integer.toOctalString(subject.getState()));
    }
}
public class HexadecimalObserver extends Observer {
    public HexadecimalObserver(Subject subject) {
        this.subject = subject;
        this.subject.attach(this);
    }
    public void update() {
        System.out.println("Hexadecimal String: " + Integer.toHexString(subject.getState()));
    }
}

上面的代码演示了一个简单的观察者模式实现。Subject 对象维护一个观察者列表,并提供了用于添加、删除和通知观察者的方法。Observer 抽象类定义了一个抽象的 update 方法,具体的观察者类继承该抽象类并实现自己的 update 方法。

结语

上述只是几个常用的设计模式的 Java 实现示例,设计模式还有很多种类和变体。了解和熟悉这些模式对于设计良好的软件系统至关重要。通过应用适当的设计模式,我们可以使代码更具可读性、可维护性和可扩展性。

信息由用户投稿以及用户自行发布,真实性、合法性由发布人负责,涉及到汇款等个人财产或隐私内容时请仔细甄别,注意防骗!如有侵权,请联系:wwwlaoyuwang#126.com(#=@)!我们会第一时间核实处理!

相关推荐

  • cpu超频软件有哪些

    CPU超频软件有哪些在计算机领域,CPU超频(Overclocking)是指将中央处理器(CPU)运行频率提高至高于制造商设定的默认频率。通过使用CPU超频软件,用户可以改变CPU的工作频率和电压...

    807值得一看2025-07-12
  • cpu测试软件有哪些

    CPU测试软件有哪些在选择和购买CPU时,进行CPU测试是非常重要的一项工作。通过使用专业的CPU测试软件,您可以对CPU进行各种性能和稳定性测试,以评估其性能并进行比较。以下是几个常用的CPU测...

    378值得一看2025-07-12
  • corel有哪些软件

    Corel有哪些软件Corel是一家知名的软件公司,提供各种面向不同领域的设计和创意软件。以下是一些常见的Corel软件:1.CorelDRAWCorelDRAW是Corel旗下的矢...

    864值得一看2025-07-12
  • cnc数控软件有哪些

    CNC数控软件有哪些在现代制造业中,计算机数控(ComputerNumericalControl,CNC)技术的应用越来越广泛。CNC数控软件是用于编程和控制CNC机床的软件系统。下面列举几种...

    507值得一看2025-07-12
  • dft软件有哪些

    DFT软件有哪些密度泛函理论(DensityFunctionalTheory,DFT)是一种计算量子力学方法,用于研究分子和固体材料的性质。随着计算机技术的不断发展,出现了许多可以进行量子化学...

    628值得一看2025-07-12