java工厂模式静态工厂,java中简单工厂模式(静态工厂方法模式)

简单工厂模式

简单工厂模式也叫做静态工厂方法模式。

简单工厂模式组成:

• 工厂类角色:本模式的核心,含有一定的商业逻辑和判断逻辑,是由一个具体类实现。

• 抽象产品角色:具体产品抽象出来的父类或者接口,用于子类的继承或者实现,通常由抽象类或接口表现。

• 具体产品角色:工厂类创建的对象就是该角色的实例。一般是个具体类,继承或实现抽象产品角色。

可以结合以下的示例和概念一起理解

1、工厂类角色:

package com.jcxy.demo07;

/**

*

* 负责生产所需要的对象

*

* @author Mr Wang

* @version [V1.00, 2015-12-7]

* @see [相关类/方法]

* @since V1.00

*/

public class Factory

{

//静态方法(生产工具)

public static Car getCar(String name)

{

if("BMW".equals(name))

{

return new BMW();

}

else if("Benz".equals(name))

{

return new Benz();

}

else if("QQ".equals(name))

{

return new QQ();

}

else

{

return null;

}

}

}

2、抽象产品

角色:

package com.jcxy.demo07;

/**

* 具体产品抽象出来的父类或者接口

* 一般是具体产品继承的父类或实现的接口

*

* @author Mr Wang

* @version [V1.00, 2015-12-7]

* @see [相关类/方法]

* @since V1.00

*/

public interface Car

{

//只定义共有的行为,但是具体的实现则由子类动态的实现

public abstract void drive();

}

3、具体产品

类角色:

package com.jcxy.demo07;

//BMW产品类

public class BMW implements Car

{

public void drive()

{

// TODO Auto-generated method stub

System.out.println("BMW is driving");

}

}

//Benz产品类

package com.jcxy.demo07;

public class Benz implements Car

{

public void drive()

{

// TODO Auto-generated method stub

System.out.println("Benz is driving");

}

}

package com.jcxy.demo07;

//QQ产品类

public class QQ implements Car

{

public void drive()

{

// TODO Auto-generated method stub

System.out.println("QQ is driving");

}

}

测试类

package com.jcxy.demo07;

public class Test

{

public static void main(String[] args)

{

//工厂生产QQ对象

Car qq = Factory.getCar("QQ");

qq.drive();

//工厂生产Benz对象

Car benz = Factory.getCar("Benz");

benz.drive();

//工厂生产BMW对象

Car bmw = Factory.getCar("BMW");

bmw.drive();

//如果生产一个次品(即工厂里不生产的产品),会怎么样呢?

// Car w = Factory.getCar("W");

// w.drive();会有java.lang.NullPointerException,原因在于返回的null,所以在drive之间还是需要判断一下对象是否为空才严谨

}

}打印输出:

QQ is driving

Benz is driving

BMW is driving

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值