工厂方法是用的最多的设计模式,所以今天再深入的学习。
package com.factorydemo.www;

public class Factory {
	public static void main(String[] args){
		/*Car car = null;
		CarFactory c = new CarFactory(); 
		car = c.getCarInstance("Benz");
		if(c!=null)
		{
			car.run();
			car.stop();
		}
		else
		{
			System.out.println("不能生成你想生成你想要的!");
		}*/
		
		Car car = null;
		BusFactory c = new BusFactory();
		car =c.getBus("BigBus");
		if(c!=null){
			car.run();
			car.stop();
		}
		else{
			System.out.println("sorry!");
		}
		
	}
}

interface Car {
	public void run();
	public void stop();
}

class Benz implements Car{
	public void run(){
		System.out.println("Benz is runing............");
	}
	public void stop(){
		System.out.println("Benz is stop!");
	}
}

class Ford implements Car{
	public void run(){
		System.out.println("Ford is runing ........");
	}
	public void stop(){
		System.out.println("Ford is stop!");
	}
}

class BigBus implements Car{
	public void run(){
		System.out.println("BigBus is runing .......");
	}
	public void stop(){
		System.out.println("BigBus is stop1");
	}
	
}

class MiniBus implements Car{
	public void run(){
		System.out.println("MiniBus is running .....");
		
	}
	public void stop(){
		System.out.println("MiniBus is stop!");
	}
}


interface GetFactory{
	
}

class CarFactory implements GetFactory{
	Car c = null;
	public Car getCarInstance(String type){
		try {
			c = (Car)Class.forName("com.factorydemo.www."+type).newInstance();
		} catch (InstantiationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}//使用了java的反射机制,forName("包名."+type).newInstance生成实例,(car)转换。
		
		return c;
	}
	
}

class BusFactory implements GetFactory{
	Car c = null;
	public Car getBus(String type){
		try {
			c =(Car)Class.forName("com.factorydemo.www."+type).newInstance();
		} catch (InstantiationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return c;
	}
}
评论
发表评论

您还没有登录,请登录后发表评论

BEA
搜索本博客
我的相册
C185a0b8-90cb-37ce-9140-04449c6497bf-thumb
427531f9-950e-4e4d-88b6-8d1ef3df545f
共 88 张
存档
最新评论