----------------------------------------------公共的抽象父类或接口--------------------------------
public abstract class Car {
public abstract void start();
}
----------------------------------------------子类通过不同的方法实现了基类中的方法----------
----------------------------------------------子类BMW--------------------------------------------------
public class BMW extends Car {
/* (non-Javadoc)
* @see com.demofactory.Car#start()
*/
@Override
public void start() {
System.out.println("BMW start......");
}
}
----------------------------------------------子类Audi------------------------------------------------
public class Audi extends Car {
/* (non-Javadoc)
* @see com.demofactory.Car#start()
*/
@Override
public void start() {
System.out.println("Audi start......");
}
}
----------------------------------------------------子类JingLong--------------------------------------------------------------------------------
package com.demofactory;
public class JinLong implements ICar {
private String name;
public JinLong(String name) {
this.name=name;
}
@Override
public void start() {
System.out.println(name+" start..............");
}
}
----------------------------------------------------------------抽象工厂-----------------------------------------------------------------------------------------
package com.demofactory;
public interface IFactory {
//统一标准,不干活的工厂
public abstract ICar buildCar(int i);
}
--------------------------------------------------------------------------工厂实现CarFactory---------------------------------------------------------------------
package com.demofactory;
public class CarFactory implements IFactory {
//已下是单例
private static CarFactory instance=null;
private CarFactory(){
}
public static CarFactory getInstance(){
if(instance==null){
instance=new CarFactory();
}
return instance;
}
// 生产车
public ICar buildCar(int i) {
if (i == 0) {
return new BMW();
} else {
return new Audi();
}
}
}
--------------------------------------------------------------------------工厂实现CarFactory1---------------------------------------------------------------------
package com.demofactory;
public class CarFactory1 implements IFactory {
//已下是单例
private static CarFactory1 instance=null;
private CarFactory1(){
}
public static CarFactory1 getInstance(){
if(instance==null){
instance=new CarFactory1();
}
return instance;
}
@Override
public ICar buildCar(int i) {
if(i>0){
return new JinLong("金龙");
}
return null;
}
}
-----------------------------------------------------------------------------------------------测试------------------------------------------------------------------------------------------------
package com.demofactory;
/**
* @author Administrator
*
*/
public class TestFactory {
public static void main(String[] args) {
//根据需要生产相应的车
IFactory f = CarFactory.getInstance();//IFactory不干活,只定义规范
ICar car=f.buildCar(0);
car.start();
ICar car1=f.buildCar(1);
car1.start();
IFactory f1 = CarFactory1.getInstance();
ICar car3=f1.buildCar(1);
car3.start();
}
}
------------------------------------------------------------------------------------------------------------结果--------------------------------------------------------------------------------------
BMW start......
Audi start......
金龙 start..............