通俗易懂的java设计模式之 --抽象工厂模式

抽象工厂模式是一种创建型设计模式,用于创建一系列相关或依赖的对象,无需指定具体类。它包含抽象工厂接口和产品接口,以及具体工厂和产品实现。通过使用抽象工厂,代码可以更灵活、可扩展,降低系统耦合。示例展示了如何创建电视和电脑产品族。
摘要由CSDN通过智能技术生成

抽象工厂模式是Java中的一种创建型设计模式,它提供了一种方式来创建一系列相关或相互依赖的对象,而无需指定它们的具体类。

在抽象工厂模式中,我们定义一个抽象工厂接口,它声明了用于创建一组相关对象的方法。每个具体工厂实现该接口以提供与特定产品族相关的对象实现。然后,我们定义一组抽象产品接口,每个接口声明了一组相关产品的方法。每个具体工厂实现这些接口以提供特定于其产品族的具体产品。

下面是一个简单的例子,我们创建了两个产品族:电视和电脑,每个产品族都有两个产品:普通和高端。我们将创建一个抽象工厂ElectronicFactory和两个具体工厂TVFactoryComputerFactory,并创建抽象产品接口Electronic和具体产品NormalTVHighEndTVNormalComputerHighEndComputer

// 抽象产品接口
interface Electronic {
    String getType();
}

// 具体产品类
class NormalTV implements Electronic {
    public String getType() {
        return "Normal TV";
    }
}

class HighEndTV implements Electronic {
    public String getType() {
        return "High-end TV";
    }
}

class NormalComputer implements Electronic {
    public String getType() {
        return "Normal computer";
    }
}

class HighEndComputer implements Electronic {
    public String getType() {
        return "High-end computer";
    }
}

// 抽象工厂接口
interface ElectronicFactory {
    Electronic createNormal();
    Electronic createHighEnd();
}

// 具体工厂类
class TVFactory implements ElectronicFactory {
    public Electronic createNormal() {
        return new NormalTV();
    }

    public Electronic createHighEnd() {
        return new HighEndTV();
    }
}

class ComputerFactory implements ElectronicFactory {
    public Electronic createNormal() {
        return new NormalComputer();
    }

    public Electronic createHighEnd() {
        return new HighEndComputer();
    }
}

在上面的代码中,Electronic是抽象产品接口,NormalTVHighEndTVNormalComputerHighEndComputer是具体产品类。ElectronicFactory是抽象工厂接口,TVFactoryComputerFactory是具体工厂类,分别用于创建电视和电脑产品族。

当需要使用特定的产品族时,可以使用相应的具体工厂来创建相应的产品,例如:

ElectronicFactory tvFactory = new TVFactory();
Electronic normalTV = tvFactory.createNormal();
Electronic highEndTV = tvFactory.createHighEnd();
System.out.println(normalTV.getType());
System.out.println(highEndTV.getType());

ElectronicFactory computerFactory = new ComputerFactory();
Electronic normalComputer = computerFactory.createNormal();
Electronic highEndComputer = computerFactory.createHighEnd();
System.out.println(normalComputer.getType());
System.out.println(highEndComputer.getType());

这将输出以下内容:

Normal TV
High-end TV
Normal computer
High-end computer

这样我们就可以通过抽象工厂模式来创建一组相关对象,而无需指定它们的具体类,这可以帮助我们实现更灵活、可扩展和易于维护的代码。同时,它还有助于降低系统的耦合性,因为客户端代码只需要使用抽象工厂接口和抽象产品接口,而不需要知道具体的实现细节。

需要注意的是,抽象工厂模式适用于创建一组相关对象,如果需要创建单个对象,则使用工厂模式更加合适。此外,如果需要支持新的产品族,则需要创建新的具体工厂和产品类。

总体而言,抽象工厂模式是一种非常有用的设计模式,可以帮助我们创建高度可定制和可扩展的对象组合,同时还可以提高代码的可维护性和可读性。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值