“我一路向北,离开有你的季节;你说你好累,已无法再爱上谁”
工厂模式
的原则就是:
使用工厂来生产对象,生产对象的时候只需要和工厂打交道就可以了,不需要和具体的类进行耦合,达到解耦
的目的。
spring
中有两大特性,IOC
和AOP
。都知道吧?IOC
就是基于工厂模式实现的。
spring
中,对象的创建就是通过BeanFactory
和 ApplicationContext
完成的
工厂模式具体涉及到三个类:
抽象产品类
:定义了产品的规范,描述了产品的主要特性和功能。
具体产品类
:实现或者继承抽象产品的子类。
工厂类
:提供了创建产品的方法,调用者通过该方法来创建产品。
先来一个买汽车的案例。
抽象产品类:
package com.app.simple_facrory;
public abstract class Car {
public abstract String getName();
}
具体产品类:
package com.app.simple_facrory;
public class BWMCar extends Car {
@Override
public String getName() {
return "宝马汽车";
}
}
package com.app.simple_facrory;
public class BenchiCar extends Car {
@Override
public String getName() {
return "奔驰汽车";
}
}
package com.app.simple_facrory;
public class AodiCar extends Car{
@Override
public String getName() {
return "奥迪汽车";
}
}
工厂类:造汽车的
package com.app.simple_facrory;
public class SimpleCarFactory {
public Car produceCar(String carName){
Car car = null;
if ("宝马汽车".equals(carName)){
car = new BWMCar();
}else if ("奔驰汽车".equals(carName)){
car = new BenchiCar();
}else if ("奥迪汽车".equals(carName)){
car = new AodiCar();
}else {
System.out.println("没有您想要购买的汽车~");
}
return car;
}
}
4S店: 其实就是4S店去生产汽车的地方运汽车过来然后向客户卖出去
package com.app.simple_facrory;
public class BuyCar {
public Car produce(String CarName){
SimpleCarFactory simpleCarFactory = new SimpleCarFactory();
Car car = simpleCarFactory.produceCar(CarName);
return car;
}
}
客户端:(你去4S店里买汽车,然后4s店告诉汽车工厂生产什么样的汽车)
package com.app.simple_facrory;
public class CarClient {
public static void main(String[] args) {
BuyCar fourS = new BuyCar();
Car car = fourS.produce("宝马汽车");
String carName = car.getName();
System.out.println(carName);
}
}
说实话,其实我最喜欢的还是奥迪
。哈哈哈哈哈哈哈哈哈哈哈