工厂模式
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();
}
}