普通工厂模式分为:1)普通模式 2)多个工厂模式 3)静态工厂模式
public class Main {
public static void main(String[] args) throws Exception {
Car car = CarFactory.createCar("BAOMA");
car.run();
}
}
class CarFactory{
public static Car createCar(String name){
if ("AODI".equals(name)) return new Aodi();
else if ("BAOMA".equals(name)) return new Baoma();
else return null;
}
}
interface Car{
public void run();
}
final class Aodi implements Car{
@Override
public void run() {
System.out.println("我是奥迪车!");
}
}
final class Baoma implements Car{
@Override
public void run() {
System.out.println("我是宝马车!");
}
}
贴上自己喜欢的代码!
——这是普通工厂模式的代码,另外两种也类同。 我们使用最多的是静态工厂模式,不需要创建实例直接调用就可以!
抽象工厂模式:
/**
*
* @author: muyichun
* @date : 2016-3-22上午10:19:06
* @function: 抽象工厂模式
*/
public class Main {
public static void main(String[] args) throws Exception {
Provider provicer = new CarAodiFactory();
Car car = provicer.produce();
car.run();
}
}
interface Provider{ // 工厂代理接口
public Car produce();
}
class CarAodiFactory implements Provider{
@Override
public Car produce() {
return new Aodi();
}
}
class CarBaomaFactory implements Provider{
@Override
public Car produce() {
return new Baoma();
}
}
interface Car{ // 产品代理接口
public void run();
}
final class Aodi implements Car{
@Override
public void run() {
System.out.println("我是奥迪车!");
}
}
final class Baoma implements Car{
@Override
public void run() {
System.out.println("我是宝马车!");
}
}
抽象工厂其本质是一样的,如果将工厂类设为静态的就失去其抽象(面向对象)的意义了。 结合实际项目选着合适的模式或者有几种都可以使用!