工厂模式就是新建对象交给工厂统一制作,不需要自己单独新建。模拟现实生活中我们买一个电脑,电脑并不是我们自己生产,我们只需要知道自己买什么品牌的电脑,其他交给工厂制作。适合标准化的对象大量创建,使用者可以不知道对象的细节,只需要知道对象的名称即可得到对象,使得对象使用更加简单方便。还可以解耦,如果使用者觉得这个对象不好用,则只需要更改工厂类即可,其他不需要修改。
代码演示
电脑父类
package com.wmx.factory;
public class Computer {
private String name;
private double price;
@Override
public String toString() {
return "Computer{" +
"name='" + name + '\'' +
", price=" + price +
'}';
}
public Computer() {
}
public Computer(String name, double price) {
this.name = name;
this.price = price;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}
华为电脑子类
package com.wmx.factory;
public class Huawei extends Computer {
private String logo;
public Huawei() {
}
@Override
public String toString() {
return "Huawei{" +
"logo='" + logo + '\'' + super.getName() + "\'" + super.getPrice() +
'}';
}
public Huawei(String logo) {
this.logo = logo;
}
public Huawei(String name, double price, String logo) {
super(name, price);
this.logo = logo;
}
public String getLogo() {
return logo;
}
public void setLogo(String logo) {
this.logo = logo;
}
}
苹果电脑子类
package com.wmx.factory;
public class Mac extends Computer {
private String material;
public Mac() {
}
@Override
public String toString() {
return "Mac{" +
"material='" + material + '\'' + super.getName() + "\'" + super.getPrice() +
'}';
}
public Mac(String material) {
this.material = material;
}
public Mac(String name, double price, String material) {
super(name, price);
this.material = material;
}
public String getMaterial() {
return material;
}
public void setMaterial(String material) {
this.material = material;
}
}
工厂类
package com.wmx.factory;
public class ComputerFactory {
public static Computer produceComputer(String computerName) {
switch (computerName) {
case "huawei":
return new Huawei("华为P40", 5100, "菊花");
case "mac":
return new Mac("苹果13", 8100, "铝合金");
default:
return null;
}
}
}
测试类
package com.wmx.factory;
public class Yewu {
public static void main(String[] args) {
Computer mac = ComputerFactory.produceComputer("mac");
System.out.println(mac);
}
}
至此,我们的工厂模式介绍完毕,有疑问的可以下方留言,相互学习,我是心哥说编程,致力于成为一个编程大牛编程爱好者。