抽象工厂

抽象工厂

用来创建工厂的工厂,超级工厂

抽象工厂接口

public interface ProductFactory {
    PhoneProduct phoneProduct();
    RouterProduct routerProduct();
}

具体工厂类

//小米工厂
public class XiaomiFactory implements ProductFactory{
    @Override
    public PhoneProduct phoneProduct() {
        return new XiaomiPhone();
    }

    @Override
    public RouterProduct routerProduct() {
        return new XiaomiRouter();
    }
}
//华为工厂
public class HuaweiFactory implements ProductFactory{
    @Override
    public PhoneProduct phoneProduct() {
        return new HuaweiPhone();
    }

    @Override
    public RouterProduct routerProduct() {
        return new HuaweiRouter();
    }
}

抽象产品接口

//手机接口
public interface PhoneProduct {
    void start();
    void shut();
    void call();
    void send();
}
//路由器接口
public interface RouterProduct {
    void start();
    void shut();
    void openWifi();
    void setting();
}

具体产品类

//小米手机
public class XiaomiPhone implements PhoneProduct{
    @Override
    public void start() {
        System.out.println("小米手机开机");
    }

    @Override
    public void shut() {
        System.out.println("小米手机关机");
    }

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

    @Override
    public void send() {
        System.out.println("小米手机发短信机");
    }
}
//小米路由器
public class XiaomiRouter implements RouterProduct{
    @Override
    public void start() {
        System.out.println("小米路由器开机");
    }

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

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

    @Override
    public void setting() {
        System.out.println("小米路由器设置");
    }
}
//华为手机
public class HuaweiPhone implements PhoneProduct{
    @Override
    public void start() {
        System.out.println("华为手机开机");
    }

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

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

    @Override
    public void send() {
        System.out.println("华为手机发短信机");
    }
}
//华为路由器
public class HuaweiRouter implements RouterProduct{
    @Override
    public void start() {
        System.out.println("华为路由器开机");
    }

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

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

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

客户端

//客户端
public class Consumer {
    public static void main(String[] args) {
        System.out.println("===========小米==============");
        XiaomiFactory xiaomiFactory = new XiaomiFactory();
        PhoneProduct xiaomiPhone = xiaomiFactory.phoneProduct();
        xiaomiPhone.call();
        xiaomiPhone.send();
        RouterProduct xiaomiRouter = xiaomiFactory.routerProduct();
        xiaomiRouter.openWifi();
        xiaomiRouter.setting();

        System.out.println("===========华为==============");
        HuaweiFactory huaweiFactory = new HuaweiFactory();
        PhoneProduct huaweiPhone = huaweiFactory.phoneProduct();
        huaweiPhone.call();
        huaweiPhone.send();
        RouterProduct huaweiRouter = huaweiFactory.routerProduct();
        huaweiRouter.openWifi();
        huaweiRouter.setting();
    }
}
posted @   jpy  阅读(2)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示