Java-23个设计模式 Abstract Factory 抽象工厂模式

本文介绍抽象工厂模式的概念及其在软件工程中的应用。通过示例代码详细解释如何创建一系列相关或相互依赖的对象,而不指定具体类。适用于需要支持多平台或多系列产品的软件开发场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 Abstract Factory

一系列相互依赖的对象的创建工作 (提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类)

① 创建抽象工厂SoftWareFactory(生成一个软件,iOS平台或者Android平台) 

/**
 * 软件工程基类
 * 一个软件在多个平台的应用iOS和Android
 */
public abstract class SoftWareFactory {
    // 首先需要建立与平台的连接
    abstract SoftWareCon createSoftWareCon();
    // 软件运行环境
    abstract SoftWareEnv createSoftWareEnv();
}

// 其中,SoftWareCon和SoftWareEnv为以下接口
public interface SoftWareCon {
    // 负责连接指定平台
    void connection();
}

public interface SoftWareEnv {
    // 负责指定平台环境运行
    void run();
}

② 创建工厂子类(iOS和Android)

/**
 * 生产iOS软件的 "连接对象和软件运行对象" 的工厂
 */
public class IOSSoftWareFactory extends SoftWareFactory {
    @Override
    SoftWareCon createSoftWareCon() {
        return new IOSSoftWareCon();
    }
    @Override
    SoftWareEnv createSoftWareEnv() {
        return new IOSSoftWareEnv();
    }
}


/**
 * 生产iOS软件的 "连接对象和软件运行对象" 的工厂
 */
public class AndroidSoftWareFactory extends SoftWareFactory {
    @Override
    SoftWareCon createSoftWareCon() {
        return new AndroidSoftWareCon();
    }
    @Override
    SoftWareEnv createSoftWareEnv() {
        return new AndroidSoftWareEnv();
    }
}

③ 创建iOS连接接口和运行环境接口的具体类

public class IOSSoftWareCon implements SoftWareCon {
    @Override
    public void connection() {
        System.out.println("iOS系统连接成功");
    }
}

public class IOSSoftWareEnv implements SoftWareEnv {
    @Override
    public void run() {
        System.out.println("iOS系统环境运行成功");
    }
}

④ 创建Android连接接口和运行环境接口的具体类

public class AndroidSoftWareCon implements SoftWareCon {
    @Override
    public void connection() {
        System.out.println("Android系统成功连接");
    }
}

public class AndroidSoftWareEnv implements SoftWareEnv {
    @Override
    public void run() {
        System.out.println("Android环境运行成功");
    }
}

⑤ 测试类

public class Test {
    public static void main(String[] args) {
        // IOS,面向接口
        SoftWareFactory factory = new IOSSoftWareFactory();
//      Android:  SoftWareFactory factory = new AndroidSoftWareFactory();
        SoftWareCon softWareCon = factory.createSoftWareCon();
        SoftWareEnv softWareEnv = factory.createSoftWareEnv();
        softWareCon.connection();
        softWareEnv.run();
    }
}

场景:解决某一特定系列下的对象之间有相互依赖的问题,如果没有应对 " 多系列对象构建 " 的需求变化,则没有必要使用Abstract Factory模式,这时使用简单工厂即可

优点:主要在于应对 新系列 的需求变动

           如该软件支持Android,iOS,之后还会支持YunOS等系统

缺点:难以应对新对象的需求变动

           如要在抽象基类中添加新对象的话就不合适了,抽象基类要求稳定

任何模式的稳定的部分就是它的缺点

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值