工厂模式是Java中最常用的设计模式之一。
这种类型的设计模式是属于创建型设计模式。
使用场景:工厂:可能生产汽车、飞机等,把这类作为产品类。
优点:1.调用时只需要知道需求是什么,不需要知道需求的具体实现。
2.扩展性高,增加一个产品时,只需要扩展相应的工厂类、实体类。
确定:1.每增加一个产品,都需要添加相应的类,当产品越来越多时,会增加系统的复杂度,难以维护。
具体实现:
1.创建一个抽象类:
/**
* @author : jimmy
* @Description:
* @date : 2019/5/28 0028
*/
public abstract class Car {
public abstract void getCar();
}
2.创建继承抽象类的实体类:
/**
* @author : jimmy
* @Description:
* @date : 2019/5/28 0028
*/
public class BWM extends Car {
@Override
public void getCar() {
System.out.println("生产出了一辆宝马");
}
}
/**
* @author : jimmy
* @Description:
* @date : 2019/5/28 0028
*/
public class Lamborghini extends Car {
@Override
public void getCar() {
System.out.println("生产出了一辆兰博基尼");
}
}
3.创建一个抽象工厂:
/**
* @author : jimmy
* @Description:
* @date : 2019/5/28 0028
*/
public abstract class carFactory {
public abstract Car produceCar();
}
4.创建相对应的工厂:
/**
* @author : jimmy
* @Description:
* @date : 2019/5/28 0028
*/
public class BWMCarFactory extends carFactory {
@Override
public Car produceCar() {
return new BWM();
}
}
/**
* @author : jimmy
* @Description:
* @date : 2019/5/28 0028
*/
public class LamborghiniFactory extends carFactory {
@Override
public Car produceCar() {
return new Lamborghini();
}
}
5.创建一个测试类:
/**
* @author : jimmy
* @Description:
* @date : 2019/5/28 0028
*/
public class Test2abstractFactroy {
public static void main(String arg[]){
carFactory CF1 = new BWMCarFactory();
Car car1 = CF1.produceCar();
car1.getCar();
carFactory CF2 = new LamborghiniFactory();
Car car2 = CF2.produceCar();
car2.getCar();
}
}
运行结果: