工厂模式
工厂模式
工厂模式(Factory Pattern)提供了一种创建对象的最佳方式。我们不必关心对象的创建细节,只需要根据不同情况获取不同产品即可。
简单工厂
一个工厂根据需要返回具体对象
创建抽象汽车类以及实现子类:
public abstract class Car {
String engine;
abstract void run();
}
public class MiniCar extends Car{
public MiniCar() {
this.engine = "双缸";
}
@Override
void run() {
System.out.println("MiniCar in running");
}
}
public class VanCar extends Car{
public VanCar() {
this.engine = "单缸";
}
@Override
void run() {
System.out.printf("VanCar is running");
}
}
创建简单工厂:
public class SimpleFactory {
public Car newCar(String car){
Car res = null;
if("van".equals(car)){
res = new VanCar();
}else if("min".equals(car)){
res = new MiniCar();
}
return res;
}
}
测试:
public class Main {
public static void main(String[] args) {
SimpleFactory factory = new SimpleFactory();
Car min = factory.newCar("min");
min.run();
Car van = factory.newCar("van");
van.run();
}
}
工厂方法
每个工厂只负责造一种对象
抽象工厂类及其实现子类:
public abstract class WulinFactory {
abstract Car newCar();
}
public class WulinMiniFactory extends WulinFactory{
@Override
Car newCar() {
return new MiniCar();
}
}
public class WulinVanFactory extends WulinFactory{
@Override
Car newCar() {
return new VanCar();
}
}
测试:
public class Main {
public static void main(String[] args) {
WulinMiniFactory miniFactory = new WulinMiniFactory();
Car car = miniFactory.newCar();
car.run();
WulinVanFactory vanFactory = new WulinVanFactory();
Car car1 = vanFactory.newCar();
car1.run();
}
}
抽象工厂
需要什么就造什么
在抽象工厂中添加其他需要造的对象:
public abstract class WulinFactory {
abstract Car newCar();
abstract Mask newMask();
}
每个工厂去造自己的对象,对于其他产品不做实现:
public class WulinMiniFactory extends WulinFactory{
@Override
Car newCar() {
return new MiniCar();
}
@Override
Mask newMask() {
return null;
}
}
原文地址:https://blog.csdn.net/weixin_74144099/article/details/142459784
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!