• 设计模式之【工厂模式、适配器模式】


    工厂模式(Factory Pattern)

    定义:
    工厂模式是一种创建型设计模式,它提供了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法使一个类的实例化延迟到其子类。

    主要类型:

    1. 简单工厂模式(Simple Factory Pattern): 又叫静态工厂方法,由一个工厂类根据传入的参数,决定创建哪一种产品类的实例。
    2. 工厂方法模式(Factory Method Pattern): 定义一个创建对象的接口,但让子类决定实例化哪个类。
    3. 抽象工厂模式(Abstract Factory Pattern): 提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。

    优点:

    • 代码复用性高。
    • 隐藏了对象的创建细节。
    • 降低了代码的耦合性。

    适用场景:

    • 需要创建的对象具有复杂的创建过程。
    • 客户端不需要知道实际创建的具体类。
    • 系统结构需要灵活地添加新产品。

    示例代码:

    // 简单工厂模式示例
    public class SimpleFactory {
        public static Product createProduct(String type) {
            if (type.equals("A")) {
                return new ProductA();
            } else if (type.equals("B")) {
                return new ProductB();
            }
            return null;
        }
    }
    
    public interface Product {
        void use();
    }
    
    public class ProductA implements Product {
        @Override
        public void use() {
            System.out.println("Using Product A");
        }
    }
    
    public class ProductB implements Product {
        @Override
        public void use() {
            System.out.println("Using Product B");
        }
    }
    

    适配器模式(Adapter Pattern)

    定义:
    适配器模式是一种结构型设计模式,它将一个类的接口转换成客户希望的另一个接口,使得原本由于接口不兼容而不能一起工作的类可以一起工作。

    优点:

    • 让两个不兼容的类能够合作。
    • 提高了类的复用性。
    • 灵活性高。

    适用场景:

    • 系统需要使用现有的类,而这些类的接口不符合系统的需求。
    • 需要创建一个可以复用的类,能够与其他不相关或不可预见的类(即这些类可能具有不兼容的接口)协同工作。

    示例代码:

    // 目标接口
    public interface Target {
        void request();
    }
    
    // 需要适配的类
    public class Adaptee {
        public void specificRequest() {
            System.out.println("Specific request");
        }
    }
    
    // 适配器类
    public class Adapter implements Target {
        private Adaptee adaptee;
    
        public Adapter(Adaptee adaptee) {
            this.adaptee = adaptee;
        }
    
        @Override
        public void request() {
            adaptee.specificRequest();
        }
    }
    
    // 客户端代码
    public class Client {
        public static void main(String[] args) {
            Adaptee adaptee = new Adaptee();
            Target target = new Adapter(adaptee);
            target.request();
        }
    }
    

    何时使用工厂模式和适配器模式

    工厂模式:

    • 当对象的创建逻辑复杂且需要集中管理时。
    • 当系统需要在不修改客户端代码的情况下引入新产品时。
    • 当客户端不关心具体产品类的创建过程时。

    适配器模式:

    • 当现有类的接口与客户端要求的接口不兼容时。
    • 当需要使用现有的类,但它的接口不符合需求时。
    • 当希望创建一个可以与其他不相关类或未来不可预见的类一起工作的可复用类时。

    通过这些解释和代码示例,希望能帮助你更好地理解工厂模式和适配器模式及其使用场景。

  • 相关阅读:
    Textbooks Are All You Need II: phi-1.5 technical report
    【数据结构初阶】数组栈和链式队列的实现
    Jetpack架构组件_LifeCycle组件
    一个值得期待的版本OpenShift 4.11
    Mysql主从复制
    数据结构之Map和Sat
    TouchGFX之自定义控件
    JDK配置
    Codeforces Round 895 (Div. 3) A ~ F
    IF:82+ 基于 scRNA-seq 研究肺肿瘤微环境中基质细胞的表型塑造
  • 原文地址:https://blog.csdn.net/qq_38096989/article/details/139941378