23种设计模式之抽象工厂模式

抽象工厂模式

  • 定义

    • 抽象工程模式提供了一个创建一系列或者相互依赖对象的接口,无需指定它们具体的类。
  • 适用场景

    • 客户端(应用层)不依赖于产品类实例如何被创建、实现细节。
    • 强调一系列相关的产品对象(属于同一产品族)一起使用创建对象需要大量的重复代码。
    • 提供一个产品类的库,所有的产品以同样的接口出现,从而使得客户端不依赖于具体的实现。
  • 优点:

    • 具体产品在应用层的代码隔离,无需关心创建的细节。
    • 将一个系列的产品统一到一起创建。
  • 缺点:

    • 规定了所有可能被创建的产品集合,产品簇中扩展新的产品困难。
    • 增加了系统的抽象性和理解难度。

在这里插入图片描述

在这里插入图片描述

创建手机产品接口:

//手机产品接口
public interface IPhoneProduct {
    void start();
    void shutdown();
    void callup();
    void sendMS();
}

创建路由器产品接口:

//路由器产品接口
public interface IRouterProduct {
    void start();
    void shutdown();
    void openwifi();
    void setting();
}

创建华为手机:

public class HuaWeiPhone implements IPhoneProduct{
    @Override
    public void start() {
        System.out.println("打开华为手机");
    }

    @Override
    public void shutdown() {
        System.out.println("关闭华为手机");
    }

    @Override
    public void callup() {
        System.out.println("华为手机打电话");
    }

    @Override
    public void sendMS() {
        System.out.println("华为手机发短信");
    }
}

创建小米手机:

public class XiaoMiPhone implements IPhoneProduct{
    @Override
    public void start() {
        System.out.println("开启小米手机");
    }

    @Override
    public void shutdown() {

        System.out.println("关闭手机");
    }

    @Override
    public void callup() {
        System.out.println("小米打电话");
    }

    @Override
    public void sendMS() {
        System.out.println("小米发短信");
    }
}

创建华为路由器:

public class HuaWeiRouter implements IRouterProduct{
    @Override
    public void start() {
        System.out.println("打开华为路由器");
    }

    @Override
    public void shutdown() {
        System.out.println("关闭华为路由器");
    }

    @Override
    public void openwifi() {
        System.out.println("华为路由器打开wifi");
    }

    @Override
    public void setting() {
        System.out.println("华为路由器设置");
    }
}

创建小米路由器:

public class XiaoMiRouter implements IRouterProduct{
    @Override
    public void start() {
        System.out.println("打开小米路由器");
    }

    @Override
    public void shutdown() {
        System.out.println("关闭小米路由器");
    }

    @Override
    public void openwifi() {
        System.out.println("小米路由器打开wifi");
    }

    @Override
    public void setting() {
        System.out.println("小米路由器设置");
    }
}

创建产品工厂:

//抽象产品工厂
public interface IProductFactory {
    //生产手机
    IPhoneProduct iphoneProduct();
    //生产路由器
    IRouterProduct irouterProduct();
}

创建华为产品工厂:

public class HuaWeiFactory implements IProductFactory {
    @Override
    public IPhoneProduct iphoneProduct() {
        return new HuaWeiPhone();
    }

    @Override
    public IRouterProduct irouterProduct() {
        return new HuaWeiRouter();
    }
}

创建小米产品工厂:

public class XiaoMiFactory implements IProductFactory{
    @Override
    public IPhoneProduct iphoneProduct() {
        return new XiaoMiPhone();
    }

    @Override
    public IRouterProduct irouterProduct() {
        return new XiaoMiRouter();
    }
}

创建消费者:

public class Client {
    public static void main(String[] args) {
        System.out.println("****小米系列产品");
        //小米工厂
        XiaoMiFactory xiaoMiFactory = new XiaoMiFactory();
        IPhoneProduct iPhoneProduct = xiaoMiFactory.iphoneProduct();
        iPhoneProduct.callup();
        IRouterProduct iRouterProduct = xiaoMiFactory.irouterProduct();
        iRouterProduct.openwifi();

        System.out.println("****华为系列产品");
        HuaWeiFactory huaWeiFactory = new HuaWeiFactory();
        IPhoneProduct iPhoneProduct1 = huaWeiFactory.iphoneProduct();
        iPhoneProduct1.callup();
        IRouterProduct iRouterProduct1 = huaWeiFactory.irouterProduct();
        iRouterProduct1.openwifi();
    }
}

相应类图

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值