java spring-ioc框架 工厂模式(factory pattern)代码实现
maven依赖
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.1.RELEASE</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
接口
package com.hc.product;
public interface Car {
void start();
void turn();
void stop();
}
实现类
package com.hc.product;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
public class HQ implements Car{
private static final Logger LOGGER = LogManager.getLogger(HQ.class);
@Override
public void start() {
LOGGER.info("红旗启动");
}
@Override
public void turn() {
LOGGER.info("红旗转向");
}
@Override
public void stop() {
LOGGER.info("红旗刹车");
}
}
package com.hc.product;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
public class Song implements Car{
private static final Logger LOGGER = LogManager.getLogger(HQ.class);
@Override
public void start() {
LOGGER.info("宋启动");
}
@Override
public void turn() {
LOGGER.info("宋转向");
}
@Override
public void stop() {
LOGGER.info("宋刹车");
}
}
package com.hc.product;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
public class Volvo implements Car{
private static final Logger LOGGER = LogManager.getLogger(HQ.class);
@Override
public void start() {
LOGGER.info("沃尔沃启动");
}
@Override
public void turn() {
LOGGER.info("沃尔沃转向");
}
@Override
public void stop() {
LOGGER.info("沃尔沃刹车");
}
}
测试类
package com.hc.customer;
import com.hc.product.Car;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.util.Scanner;
public class Driver {
private static final Logger LOGGER = LogManager.getLogger(Driver.class);
public void drive() {
ApplicationContext ctx = new ClassPathXmlApplicationContext("spring_ioc.xml");
LOGGER.info("任选:hq、song、volvo");
Scanner scanner = new Scanner(System.in);
String select = scanner.nextLine();
Car car = (Car) ctx.getBean(select);
car.start();
car.turn();
car.stop();
}
public static void main(String[] args) throws Exception {
new Driver().drive();
}
}