工厂模式学习

工厂模式

1、简单工厂模式

在这里插入图片描述

代码:

Phone类:手机标准规范类(AbstractProduct)

public interface Phone {
    void phone();
}

华为手机类:制造华为手机

public class HuaWeiPhone implements Phone {
    @Override
    public void phone() {
        System.out.println("制造华为手机");
    }
}

vivo手机类:制造vivo手机

public class VivoPhone implements Phone {
    @Override
    public void phone() {
        System.out.println("制造vivo手机");
    }
}

小米手机类:制造小米手机

public class XiaoMiPhone implements Phone {
    @Override
    public void phone() {
        System.out.println("制造小米手机...");
    }
}

SimpleFactory类:手机代工厂(Factory)

public class SimpleFactory {
    public Phone makePhone(String phoneName){
       if (phoneName.equals("HuaWei")){
           return new HuaWeiPhone();
       }
      else if (phoneName.equals("XiaoMi")){
            return new XiaoMiPhone();
        }
      else if (phoneName.equals("Vivo")){
          return new VivoPhone();
       }
      else {
          throw new RuntimeException("不支持的手机类型");
       }
    }
}

测试类

public class test {
    public static void main(String[] args) {
        SimpleFactory simpleFactory=new SimpleFactory();
        Phone phone=simpleFactory.makePhone("XiaoMi");
        phone.phone();
    }
}

在这里插入图片描述

2、工厂方法模式(Factory Method)

在这里插入图片描述

代码:phone类与手机类与简单工厂模式相同

AbstractFactory类:生产不同产品的工厂的抽象类

public interface  AbstractFactory {
    Phone makePhone();
}

HuaWeiFactory类:生产华为手机的工厂

public class HuaWeiFactory implements AbstractFactory {
    @Override
    public Phone makePhone() {
        return new HuaWeiPhone();
    }
}

VivoFactory类:生产vivo手机的工厂

public class VivoFactory implements AbstractFactory {
    @Override
    public Phone makePhone() {
        return new VivoPhone();
    }
}

XiaoMiFactory类:生产小米手机的工厂

public class XiaoMiFactory implements AbstractFactory {
    @Override
    public Phone makePhone() {
        return new XiaoMiPhone();
    }
}

测试

public class test {
    public static void main(String[] args) {
        Phone phone = new HuaWeiFactory().makePhone();
        phone.phone();
    }
}

在这里插入图片描述

3、抽象工厂模式

针对多种产品

在这里插入图片描述

Computer类:定义电脑产品的接口

public interface Computer {
    void makepc();
}

HuaWeiComputer类:定义华为电脑产品

public class HuaWeiComputer implements Computer {
    @Override
    public void makepc() {
        System.out.println("华为电脑.....");
    }
}

XiaoMiComputer类:定义小米电脑产品

public class XiaoMiComputer implements Computer {
    @Override
    public void makepc() {
        System.out.println("小米电脑....");
    }
}

AbstractFactory类:增加PC产品接口

public interface  AbstractFactory {
    Phone makePhone();
    /**
     *因为有的品牌没有电脑(vivo) 所以设置默认为null
     */
    default Computer makeComputer(){
        return null;
    };
}

HuaWeiFactory类:华为工厂 增加华为电脑制造

public class HuaWeiFactory implements AbstractFactory {
    @Override
    public Phone makePhone() {
        return new HuaWeiPhone();
    }

    @Override
    public Computer makeComputer() {
        return new HuaWeiComputer();
    }
}

XiaoMiFactory类:小米工厂 增加小米电脑制造

public class XiaoMiFactory implements AbstractFactory {
    @Override
    public Phone makePhone() {
        return new XiaoMiPhone();
    }

    @Override
    public Computer makeComputer() {
        return new XiaoMiComputer();
    }
}

测试

public class test {
    public static void main(String[] args) {
        AbstractFactory huaWeiFactory = new HuaWeiFactory();
        huaWeiFactory.makePhone().phone();
        huaWeiFactory.makeComputer().makepc();

        VivoFactory vivoFactory = new VivoFactory();
        vivoFactory.makePhone().phone();
        vivoFactory.makeComputer().makepc();

    }
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值