设计模式之抽象工厂模式

3.2 抽象工厂模式

就像每个品牌都拥有自己的系列产品,同时拥有自己的工厂来生产这些产品,一般自己的品牌是不会让其他品牌的工厂生产。大家逛淘宝的时候发现几乎所有的服装品牌都不止是卖衣服,同时还有自己品牌的鞋子包包。这就是品牌系列。
image

public interface phone {
    void call();
}
public interface router {
    void connect();
}

//小米产品
public class xiaomiPhone implements phone{
    @Override
    public void call() {
        System.out.println("用小米手机打电话");
    }
}
public class xiaomiRouter implements router{
    @Override
    public void connect() {
        System.out.println("小米路由器连接");
    }
}

//华为产品
public class huaweiPhone implements phone{
    @Override
    public void call() {
        System.out.println("用华为手机打电话");
    }
}
public class huaweiRouter implements router{
    @Override
    public void connect() {
        System.out.println("用华为路由器连接");
    }
}

抽象工厂

public interface Factory {
    phone createPhone();
    router createRouter();
}

小米工厂:

public class xiaomiFactory implements Factory{
    @Override
    public phone createPhone() {
        return new xiaomiPhone();
    }

    @Override
    public router createRouter() {
        return new xiaomiRouter();
    }
}

华为工厂:

public class huaweiFactory implements Factory{
    @Override
    public phone createPhone() {
        return new huaweiPhone();
    }

    @Override
    public router createRouter() {
        return new huaweiRouter();
    }
}

测试:

public class test {
    public static void main(String[] args) {
        //生产小米系列产品
        Factory factory1=new xiaomiFactory();
        phone xiaomip=factory1.createPhone();
        xiaomip.call();
        router xiaomir=factory1.createRouter();
        xiaomir.connect();
        //生产华为系列产品
        Factory factory2=new huaweiFactory();
        phone huaweip=factory2.createPhone();
        huaweip.call();
        router huaweir=factory2.createRouter();
        huaweir.connect();

    }
}

结果:

用小米手机打电话
小米路由器连接
用华为手机打电话
用华为路由器连接

分析:抽象工厂模式结构复杂,代码多,但是它完全避开了创建与使用的分离。

简单工厂模式只有一个工厂。

抽象工厂模式仿佛是再工厂方法之上增加了自己品牌产品。

posted @   阿落小世界  阅读(56)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
点击右上角即可分享
微信分享提示