简单工厂模式

本文介绍了简单工厂模式的实现,并通过Java反射机制增强了其扩展性。文中提供了QQ、Toyota及Jili三种汽车类型的实例创建过程,展示了如何不修改现有代码而增加新的汽车类型。
/**
*简单工厂模式
*/
/*
interface Car{
public void run();
public void stop();
}

class QQ implements Car{
public void run(){
System.out.println("-----QQ is running-----");
}

public void stop(){
System.out.println("-----QQ is stoping-----");
}
}

class Toyota implements Car{
public void run(){
System.out.println("-----Toyota is running-----");
}

public void stop(){
System.out.println("-----Toyota is stoping-----");
}
}

class CarFactory{
public static Car getCar(String car){
if ("QQ" == car){
return new QQ();
}
if ("Toyota" == car){
return new Toyota();
}
System.out.println("none of you need,sorry");
return null;
}
}

public class Test{
public static void main(String args[]){
Car car = CarFactory.getCar("Toyota");
car.run();
car.stop();
}
}
*/

//假如 我要加入 一种吉利汽车的话,还得改动CarFactory,所以用以下方式加以解决

/**
*简单工厂模式(应用java反射机制)
*/

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

//QQ汽车
class QQ implements Car{
public void run(){
System.out.println("-----QQ is running-----");
}

public void stop(){
System.out.println("-----QQ is stoping-----");
}
}

//丰田汽车
class Toyota implements Car{
public void run(){
System.out.println("-----Toyota is running-----");
}

public void stop(){
System.out.println("-----Toyota is stoping-----");
}
}

//吉利车
class Jili implements Car{
public void run(){
System.out.println("-----Jili is running-----");
}

public void stop(){
System.out.println("-----Jili is stoping-----");
}
}

class CarFactory {
public static Car getCar(String car)throws Exception{
return (Car)Class.forName(car).newInstance();
}
}

public class Test{
public static void main(String args[]){
try{
Car car = CarFactory.getCar("Ji");
car.run();
car.stop();
}catch(Exception e){
System.out.println("can't make you car!");
}
}
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值