设计模式-抽象工厂

本文介绍了如何通过抽象设计模式,将简单工厂和工厂方法结合,实现不同品牌(如华为、小米)的产品系列,包括手机和路由器。通过创建一系列工厂类,可以方便地生成对应品牌的产品实例,例如华为路由、华为手机、小米路由和小米手机。测试类的运行展示了如何使用这些工厂来创建并展示产品。

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


前言

抽象设计模式的实现是把简单工厂和工厂方法给结合运用的,可以实现某个品牌的一系列产品。


提示:以下是具体实现,个中滋味可以自己体会

一、前期的准备类

路由接口

public interface LuYou {
    void show();
}

手机接口

public interface Phone {
    void show();
}

华为品牌和小米品牌的手机以及路由的实现类

public class HuaWeiLuYou implements LuYou {
    @Override
    public void show() {
        System.out.println("华为路由");
    }
}
public class HuaWeiPhone implements Phone {
    @Override
    public void show() {
        System.out.println("华为手机");
    }
}
public class XiaoMiLuYou implements LuYou {
    @Override
    public void show() {
        System.out.println("小米路由");
    }
}
public class XiaoMiPhone implements Phone {
    @Override
    public void show() {
        System.out.println("小米手机");
    }
}

生产路由和生产手机以及产品的工厂接口

public interface LuYouFactory {
    LuYou createLuYou();
}
public interface PhoneFactory {
    Phone createPhone();
}
public interface ProductFactory {
    LuYouFactory createLuYouFactory();
    PhoneFactory createPhoneFactory();
}

华为品牌相应的实现工厂类

public class HuaWeiLuYouFactory implements LuYouFactory {
    @Override
    public LuYou createLuYou() {
        return new HuaWeiLuYou();
    }
}
public class HuaWeiPhoneFactory implements PhoneFactory {
    @Override
    public Phone createPhone() {
        return new HuaWeiPhone();
    }
}
public class HuaWeiProductFactory implements ProductFactory {
    @Override
    public LuYouFactory createLuYouFactory() {
        return new HuaWeiLuYouFactory();
    }
    @Override
    public PhoneFactory createPhoneFactory() {
        return new HuaWeiPhoneFactory();
    }
}

小米品牌相应的实现工厂类

public class XiaoMiLuYouFactory implements LuYouFactory {
    @Override
    public LuYou createLuYou() {
        return new XiaoMiLuYou();
    }
}
public class XiaoMiPhoneFactory implements PhoneFactory {
    @Override
    public Phone createPhone() {
        return new XiaoMiPhone();
    }
}
public class XiaoMiProductFactory implements ProductFactory {
    @Override
    public LuYouFactory createLuYouFactory() {
        return new XiaoMiLuYouFactory();
    }
    @Override
    public PhoneFactory createPhoneFactory() {
        return new XiaoMiPhoneFactory();
    }
}

二、测试类编写以及运行结果

public class Demo {
    public static void main(String[] args) {
        HuaWeiProductFactory huaWeiProductFactory = new HuaWeiProductFactory();
        LuYouFactory luYouFactory = huaWeiProductFactory.createLuYouFactory();
        LuYou luYou = luYouFactory.createLuYou();
        luYou.show();
        PhoneFactory phoneFactory = huaWeiProductFactory.createPhoneFactory();
        Phone phone = phoneFactory.createPhone();
        phone.show();
        System.out.println("============");
        XiaoMiProductFactory xiaoMiProductFactory = new XiaoMiProductFactory();
        luYouFactory = xiaoMiProductFactory.createLuYouFactory();
        luYou = luYouFactory.createLuYou();
        luYou.show();
        phoneFactory = xiaoMiProductFactory.createPhoneFactory();
        phone = phoneFactory.createPhone();
        phone.show();
    }
}

运行结果如下:

华为路由
华为手机
============
小米路由
小米手机

总结

这样就可以实现一个品牌的系列产品了,添加新的产品的话就需要在产品工厂接口中添加新的产品的工厂接口,随后添加上对应的实现类即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值