java工厂模式

工厂模式有
1、工厂方法
2、抽象工厂方法。

下面我的实现是抽象工厂方法,

给所有具体的产品类定一个通用的接口。

package 工厂模式;

/**
* 航天飞行接口
*
* @Description
* @author FuJianyong
* 2015-7-14下午02:42:05
*/
public interface SpaceFlight {
/**
* 任务
*/
void task();

}




具体的产品类


package 工厂模式;

/**
* 长征运载火箭
*
* @Description
* @author FuJianyong
* 2015-7-14下午03:08:10
*/
public class LongMarch implements SpaceFlight {

public LongMarch(){
System.out.println("产品:\t长征运载火箭");
}

@Override
public void task() {
System.out.println("任务:\t把航天器送上太空");
}

}




package 工厂模式;

/**
* 神舟飞船
*
* @Description
* @author FuJianyong
* 2015-7-14下午03:18:00
*/
public class ShenzhouSpaceship implements SpaceFlight {

public ShenzhouSpaceship(){
System.out.println("产品:\t神舟飞船");
}

@Override
public void task() {
System.out.println("任务:\t承载宇航员在太空中溜达");
}

}




package 工厂模式;

/**
* 嫦娥探测器
*
* @Description
* @author FuJianyong
* 2015-7-14下午03:21:59
*/
public class ChangeProber implements SpaceFlight {

public ChangeProber(){
System.out.println("产品:\t嫦娥探测器");
}

@Override
public void task() {
System.out.println("任务:\t探测月球信息");
}
}



给所有工厂定一个抽象工厂基类。


package 工厂模式;

/**
* 抽象工厂
*
* @Description
* @author FuJianyong
* 2015-7-14下午02:42:17
*/
public abstract class Factory {

/**
* 生产产品
*/
abstract SpaceFlight produce();

}



具体的工厂类


package 工厂模式;

/**
* 长征运载火箭工厂
*
* @Description
* @author FuJianyong
* 2015-7-14下午04:14:45
*/
public class LongMarchFactory extends Factory {

public LongMarchFactory(){
System.out.println("工厂:\t长征运载火箭工厂");
}

@Override
SpaceFlight produce() {
return new LongMarch();
}

}




package 工厂模式;

/**
* 神舟飞船工厂
*
* @Description
* @author FuJianyong
* 2015-7-14下午03:58:07
*/
public class SpaceshipFactory extends Factory{

public SpaceshipFactory(){
System.out.println("工厂:\t神舟飞船工厂");
}

@Override
SpaceFlight produce() {
return new ShenzhouSpaceship();
}

}




package 工厂模式;

/**
* 嫦娥飞行探测器工厂
*
* @Description
* @author FuJianyong
* 2015-7-14下午04:00:57
*/
public class ProberFactory extends Factory {

public ProberFactory(){
System.out.println("工厂:\t嫦娥飞行探测器工厂");
}

@Override
SpaceFlight produce() {
return new ChangeProber();
}
}



测试类


package 工厂模式;

/**
* 测试抽象工厂
*
* @Description
* @author FuJianyong
* 2015-7-14下午03:25:15
*/
public class FactoryMain{

/**
* @param args
*/
public static void main(String[] args) {
//具体工厂
// Factory factory = new LongMarchFactory();
Factory factory = new ProberFactory();
// Factory factory = new SpaceshipFactory();
//生产产品
SpaceFlight sapceFlight = factory.produce();
//产品属性
sapceFlight.task();
}


}



三个工厂测试的结果依次为


工厂: 长征运载火箭工厂
产品: 长征运载火箭
任务: 把航天器送上太空

工厂: 嫦娥飞行探测器工厂
产品: 嫦娥探测器
任务: 探测月球信息

工厂: 神舟飞船工厂
产品: 神舟飞船
任务: 承载宇航员在太空中溜达
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值