抽象工厂模式第三步-使用抽象工厂模式-马士兵设计模式教程 .

其实使用abstract和interface只是根据你的需求来使用,在一些问题上并无太大的区别

简单的工厂在产生产品系列(武器,食品等)的时候会很麻烦,会导致工厂泛滥

抽象工厂在产生产品种类(枪,苹果等)的时候需要修改的地方会很多


 

public class Person {
	public static void main(String[] args) {
		AbstractFactory f1=new DefaultFactory();
		Weapon w1=f1.createWeapon();
		Transport t1=f1.createTransport();
		t1.run();
		w1.shot();
		/**
		 * 我开着汽车
		 * 拿着AK47手枪
		 */
		//如果要修改的话只需要修改工厂的实现方法即可
		AbstractFactory f=new MagicFactory();
		Weapon w=f.createWeapon();
		Transport t=f.createTransport();
		t.run();
		w.shot();
		/**
		 * 我骑着扫帚..
		 * 拿着魔法棒
		 */
	}
}



//抽象工厂
public abstract class AbstractFactory {
	public abstract Weapon createWeapon();//武器的简单工厂
	public abstract Transport createTransport();//交通工具的简单工厂
}



public class DefaultFactory extends AbstractFactory{

 @Override
 public Transport createTransport() {
  return new Car();
 }

 @Override
 public Weapon createWeapon() {
  return new AK47();
 }

}





public class MagicFactory extends AbstractFactory{

 @Override
 public Transport createTransport() {
  return new Broom();
 }

 @Override
 public Weapon createWeapon() {
  return new MagicStick();
 }
}





//武器
public interface Weapon {
<SPAN style="WHITE-SPACE: pre"> </SPAN>void shot(); 
}





//交通工具
public interface Transport {
 void run();
}





public class Car implements Transport{
public void run(){
 System.out.println("我开着汽车");
}
}



public class AK47 implements Weapon{
 public void shot(){
  System.out.println("拿着AK47手枪");
 }
}



public class Broom implements Transport{
public void run(){
 System.out.println("我骑着扫帚..");
}
}



public class MagicStick implements Weapon {
public void shot(){
 System.out.println("拿着魔法棒");
}
}

本文转自: http://blog.csdn.net/wxwzy738/article/details/7588562
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值