抽象工厂

----------------------------------------------公共的抽象父类或接口--------------------------------

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..............

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值