设计模式在Java中的应用

樱花飘落 2024-07-23 ⋅ 16 阅读

什么是设计模式

设计模式是一套被广泛使用的最佳软件设计实践方法,用来解决在软件设计过程中常见的问题。设计模式不是具体的算法或者代码片段,而是一种解决问题的思维方式,通过应用这些模式可以提高代码的可重用性、可维护性及可扩展性。

Java中的设计模式

Java作为一门面向对象的编程语言,与设计模式紧密相连。在Java中,常用的设计模式包括但不限于:单例模式、工厂模式、建造者模式、适配器模式、装饰器模式、观察者模式等。

单例模式

单例模式保证某个类只有一个实例,在整个程序中共享使用。它在Java中的应用非常广泛,例如线程池、日志对象等。

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;
    }
}

工厂模式

工厂模式根据输入的参数决定创建哪种类型的对象。它解耦了对象的创建和使用,通过工厂类统一管理创建逻辑,提高了代码的可维护性和拓展性。

public interface Shape {
    void draw();
}

public class Circle implements Shape {
    @Override
    public void draw() {
        System.out.println("Circle::draw()");
    }
}

public class Rectangle implements Shape {
    @Override
    public void draw() {
        System.out.println("Rectangle::draw()");
    }
}

public class ShapeFactory {
    public Shape getShape(String shapeType){
        if(shapeType == null){
            return null;
        }

        if(shapeType.equalsIgnoreCase("CIRCLE")){
            return new Circle();
        } else if(shapeType.equalsIgnoreCase("RECTANGLE")){
            return new Rectangle();
        }

        return null;
    }
}

建造者模式

建造者模式用于创建复杂对象,将对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。

public class Product {
    private String partA;
    private String partB;
    private String partC;

    public void setPartA(String partA){
        this.partA = partA;
    }

    public void setPartB(String partB){
        this.partB = partB;
    }

    public void setPartC(String partC){
        this.partC = partC;
    }

    public void show(){
        System.out.println("Part A: " + partA);
        System.out.println("Part B: " + partB);
        System.out.println("Part C: " + partC);
    }
}

public abstract class Builder {
    protected Product product = new Product();

    public abstract void buildPartA();
    public abstract void buildPartB();
    public abstract void buildPartC();

    public Product getResult(){
        return product;
    }
}

public class ConcreteBuilder extends Builder {
    @Override
    public void buildPartA() {
        product.setPartA("PartA");
    }

    @Override
    public void buildPartB() {
        product.setPartB("PartB");
    }

    @Override
    public void buildPartC() {
        product.setPartC("PartC");
    }
}

public class Director {
    private Builder builder;

    public Director(Builder builder){
        this.builder = builder;
    }

    public void construct(){
        builder.buildPartA();
        builder.buildPartB();
        builder.buildPartC();
    }
}

public class Client {
    public static void main(String[] args) {
        Builder builder = new ConcreteBuilder();
        Director director = new Director(builder);
        director.construct();
        Product product = builder.getResult();
        product.show();
    }
}

总结

设计模式是提高代码可复用性、可维护性和可拓展性的重要手段。在Java中,通过运用设计模式,可以使代码更加清晰、简洁、可维护。以上只是Java中部分常用的设计模式,实际应用中还有更多的设计模式供我们借鉴。


全部评论: 0

    我有话说: