【破解Java设计模式】实战解析与案例深度剖析

发布时间:2025-05-23 00:29:30

引言

Java计划形式是一套经过验证的、可重用的代码计划处理打算,旨在处理软件开辟过程中罕见的成绩。经由过程控制计划形式,开辟者可能编写出愈加可保护、可扩大年夜跟可重用的代码。本文将深刻剖析Java计划形式,并经由过程实战案例停止深度分析,帮助读者更好地懂得跟利用这些计划形式。

一、创建型形式

1. 单例形式(Singleton Pattern)

单例形式确保一个类只有一个实例,并供给全局拜访点。实现方法包含静态外部类、罗列跟双检锁等。

public class Singleton {
    private static volatile Singleton instance;

    private Singleton() {}

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

2. 工厂形式(Factory Pattern)

工厂形式供给创建东西的接口,但不指定具体类。罕见实现包含简单工厂、工厂方法跟抽象工厂形式。

public interface Product {
    void use();
}

public class ConcreteProductA implements Product {
    public void use() {
        System.out.println("利器具体产品A");
    }
}

public class ConcreteProductB implements Product {
    public void use() {
        System.out.println("利器具体产品B");
    }
}

public class Factory {
    public static Product createProduct(String type) {
        if ("A".equals(type)) {
            return new ConcreteProductA();
        } else if ("B".equals(type)) {
            return new ConcreteProductB();
        }
        return null;
    }
}

3. 制作者形式(Builder Pattern)

制作者形式将复杂东西的构建与它的表示分别,使得同样的构建过程可能创建差其余表示。

public class Person {
    private String name;
    private int age;
    private String address;

    public static class Builder {
        private String name;
        private int age;
        private String address;

        public Builder setName(String name) {
            this.name = name;
            return this;
        }

        public Builder setAge(int age) {
            this.age = age;
            return this;
        }

        public Builder setAddress(String address) {
            this.address = address;
            return this;
        }

        public Person build() {
            return new Person(this);
        }
    }

    private Person(Builder builder) {
        this.name = builder.name;
        this.age = builder.age;
        this.address = builder.address;
    }
}

二、构外型形式

1. 适配器形式(Adapter Pattern)

适配器形式将一个类的接口转换成客户期望的另一个接口,使得底本接口不兼容的类可能一同任务。

public interface Target {
    void request();
}

public class Adaptee {
    public void specificRequest() {
        System.out.println("特有功能");
    }
}

public class Adapter implements Target {
    private Adaptee adaptee;

    public Adapter(Adaptee adaptee) {
        this.adaptee = adaptee;
    }

    @Override
    public void request() {
        adaptee.specificRequest();
    }
}

2. 桥接形式(Bridge Pattern)

桥接形式将抽象部分与实现部分分别,使它们都可能独破地变更。

public abstract class Abstraction {
    protected Implementor implementor;

    public Abstraction(Implementor implementor) {
        this.implementor = implementor;
    }

    public abstract void operation();
}

public class RefinedAbstraction extends Abstraction {
    @Override
    public void operation() {
        System.out.println("RefinedAbstraction operation");
        implementor.operation();
    }
}

public abstract class Implementor {
    public abstract void operation();
}

public class ConcreteImplementorA extends Implementor {
    @Override
    public void operation() {
        System.out.println("ConcreteImplementorA operation");
    }
}

三、行动型形式

1. 战略形式(Strategy Pattern)

战略形式定义一系列算法,将每一个算法封装起来,并使它们可能相互调换。

public interface Strategy {
    void execute();
}

public class ConcreteStrategyA implements Strategy {
    @Override
    public void execute() {
        System.out.println("履行战略A");
    }
}

public class ConcreteStrategyB implements Strategy {
    @Override
    public void execute() {
        System.out.println("履行战略B");
    }
}

public class Context {
    private Strategy strategy;

    public Context(Strategy strategy) {
        this.strategy = strategy;
    }

    public void setStrategy(Strategy strategy) {
        this.strategy = strategy;
    }

    public void executeStrategy() {
        strategy.execute();
    }
}

总结

本文深刻剖析了Java计划形式,并经由过程实战案例停止了深度分析。经由过程进修本文,读者可能更好地懂得跟利用Java计划形式,从而进步代码品质,降落保护本钱。在现实开辟过程中,抉择合适的计划形式,可能使得代码愈加清楚、易保护,进步开辟效力。