工厂设计java_java 简单工厂设计模式

先写程序,在来解释简单工厂和工厂方法模式。

1、定义一个汽车接口

package com.beckham.factory;

/**

* @author 作者

* Email:gaowm0207@gmail.com

* Jan 26, 2010 2:35:15 PM

* Version:1.0

*/

public interface Car {

public void start() ;

}

接口里面定义一个方法:start()

2、实现该接口的汽车

奔驰

package com.beckham.factory;

/**

* @author 作者

* Email:gaowm0207@gmail.com

* Jan 26, 2010 3:07:25 PM

* Version:1.0

*/

public class Benz implements Car {

public void start() {

System.out.println("奔驰车启动了。。。。");

}

}

奥迪

package com.beckham.factory;

/**

* @author 作者

* Email:gaowm0207@gmail.com

* Jan 26, 2010 3:07:46 PM

* Version:1.0

*/

public class Audi implements Car {

public void start() {

System.out.println("奥迪车启动了。。。。。。");

}

}

到此,已经有2种汽车实现了汽车接口

package com.beckham.factory;

public class Test {

/**

* Owner

* Jan 26, 2010 2:37:11 PM

* @throws Exception

*/

public static void main(String[] args) throws Exception {

Car c = new Benz() ;

//Car c = new Audi() ;

c.start() ;

}

}

我们可以通过自己new不同的对象,从而创建不同对象的实例调用共同的start方法。

这是我们就会想,是不是可以把产生汽车的过程放在一个工厂里面,而我们调用的时候只需要告诉工厂我们需要哪种汽车,工厂就返回给我们该汽车呢?那么我们就创建该工厂。

package com.beckham.factory;

/**

* @author 作者

* Email:gaowm0207@gmail.com

* Jan 26, 2010 2:49:46 PM

* Version:1.0

*/

public class CarFactory {

/*

* carName 就是需要工厂产生的对象

* 通过反射机制来获取该对象的实例

*/

public static Car getInstance(String carName) throws Exception {

return (Car) Class.forName(carName).newInstance();

}

}

工厂接受传递过来的汽车的名称,返回该汽车的实例

package com.beckham.factory;

public class Test {

/**

* Owner

* Jan 26, 2010 2:37:11 PM

* @throws Exception

*/

public static void main(String[] args) throws Exception {

//需要那种对象的实例,直接把该对象的名称告诉工厂就行

Car car = CarFactory.getInstance("com.beckham.factory.Audi") ;

car.start() ;

}

}

这时候,我们就不需要自己new汽车了,只需要告诉工厂我们需要Audi,那么工厂就返回我们

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值