初学工厂方法模式

         在工厂方法模式中:核心的工厂类不在负责所有的产品的创建,而是将具体创建的工作交给子类去做,这个核心类就成为一个抽象工厂角色,仅负责给具体工厂子类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。
       在这里举一个例子: 抽象产兵器;具体产品有大炮,坦克和轰炸机。使用工厂方法模式生产具体产品 。用代码实现。模拟代码如下:

Weapons.java

public interface Weapons {
	/** 抽象工厂方法 */
	public abstract ManuFacture battle();
}

ManuFacture.java

 

public interface ManuFacture {

	/** 组装 */
	public abstract void assembling();

	/** 拆除 */
	public abstract void dismantle();
}

 

ManuFactureAircraft.java

public class ManuFactureAircraft implements ManuFacture {

	@Override
	public void assembling() {
		// TODO Auto-generated method stub
		System.out.println("组装轰炸机");
	}

	@Override
	public void dismantle() {
		// TODO Auto-generated method stub
		System.out.println("拆除轰炸机");
	}

}

 
ManuFactureArtillery.java

public class ManuFactureArtillery implements ManuFacture {

	@Override
	public void assembling() {
		// TODO Auto-generated method stub
		System.out.println("组装大炮");
	}

	@Override
	public void dismantle() {
		// TODO Auto-generated method stub
		System.out.println("拆除大炮");
	}

}

 

ManuFactureTank.java

public class ManuFactureTank implements ManuFacture {

	@Override
	public void assembling() {
		// TODO Auto-generated method stub
		System.out.println("组装坦克");
	}

	@Override
	public void dismantle() {
		// TODO Auto-generated method stub
		System.out.println("拆除坦克");
	}

}

 

Aircraft.java

public class Aircraft implements Weapons {
	/** 实现轰炸机战斗的工厂方法 */
	@Override
	public ManuFacture battle() {
		// TODO Auto-generated method stub
		return new ManuFactureAircraft();
	}

}

 

Artillery.java

public class Artillery implements Weapons {

	/** 实现大炮战斗的工厂方法 */
	@Override
	public ManuFacture battle() {
		// TODO Auto-generated method stub
		return new ManuFactureArtillery();
	}

}

 

Tank.java

public class Tank implements Weapons {
	/**实现坦克战斗的工厂方法 */
	@Override
	public ManuFacture battle() {
		// TODO Auto-generated method stub
		return new ManuFactureTank();
	}

}

 
测试程序:

Client.java

public class Client {
	private static Weapons weapons1, weapons2,weapons3;
	private static ManuFacture mf1, mf2,mf3;

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		weapons1=new Artillery();
		mf1=weapons1.battle();
		mf1.assembling();
		mf1.dismantle();
		
		weapons2=new Tank();
		mf2=weapons2.battle();
		mf2.assembling();
		mf2.dismantle();
		
		weapons3=new Aircraft();
		mf3=weapons3.battle();
		mf3.assembling();
		mf3.dismantle();
	}

}

 


 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值