啥是工厂模式
啥是工厂模式?按名字上理解就是,弄一个工厂,然后生产各式各样的产品;
那么这里的产品,就是指对象,我们建一个工厂,工厂根据我们传不同的参数给我们返回不同的对象,那么我们就不需要去手动建对象(那么也不需要去记那些长长的类名),之间传对于的参数给工厂,工厂就会返回对于的对象给我们;
上代码
第一步先建一个接口(理解为产品类型)
public interface Fruit{
void draw();
}
第二步创建接口的实现类(理解为各种各样的产品)
public class Apple implements Fruit{
@Override
public void draw() {
System.out.println("这里是苹果的draw方法");
}
}
public class Banana implements Fruit{
@Override
public void draw() {
System.out.println("这里是香蕉的draw方法");
}
}
public class Strawberry implements Fruit{
@Override
public void draw() {
System.out.println("这里是草莓的draw方法");
}
}
public class Durian implements Fruit{
@Override
public void draw() {
System.out.println("这里是榴莲的draw方法");
}
}
第三步则是创建一个工厂去生产这些产品
public class FruitFactory {
//使用 getFruit方法获取形状类型的对象
public Fruit getFruit(String fruitType){
//当然在方法里面也可以定义其他不同的更加复杂的业务逻辑,然后返回对于的对象
if(fruitType== null){
return null;
}
if(fruitType.equals("Apple")){
return new Apple();
} else if(fruitType.equals("Banana")){
return new Banana();
} else if(fruitType.equals("Strawberry")){
return new Strawberry();
} else if(fruitType.equals("Durian")){
return new Durian();
}
return null;
}
}
到这里,工厂就已经建好了,那么我们就可以使用了:
public class FactoryDemo {
public static void main(String[] args) {
//建一个工厂对象
FruitFactory fruitFactory = new FruitFactory ();
//调用工厂的getFruit方法
//这里获取的就是一个榴莲
Fruit fruit = fruitFactory.getFruit("Durian");
fruit.draw();//这里就会执行榴莲类Durian的draw方法
}
}