设计模式之简单工厂.

什么是简单工厂设计模式?

工厂是生产零部件的地方,在程序中简单工厂就是生产对象.其实简单工厂是设计模式里面一个较为简单的设计模式,也是比较常用的设计模式之一.

为什么要用简单工厂设计模式?

例如我们写一个飞行游戏程序,其中飞机的各种子弹是需要不停的new的.那么在程序中我们需要更具不同的子弹类型产生不同子弹对象.

switch(bullettype){

case bullettype1:

         new 类型1子弹;

break;

case bullettype2:

         new 类型2子弹;

break;

case bullettype3:

         new 类型3子弹;

break;

}

这样一段代码要是直接写在某一个类里是会增加耦合度的,所以我们要对这段代码进行封装.下面用到的封装风格就是简单工厂设计模式了.

封装有三个好处这里顺便提一下:

(1)降低耦合

(2)封装出来的类在内部可以实现自由修改

(3)类具有清晰的对外接口

怎么用简单工厂设计模式?

简单工厂UML

 

下面是代码部分:

BulletFactory.class

public class BulletFactory {
	public static final int BULLETTYPEONE = 0;
	public static final int BULLETTYPETWO = 1;
	public static final int BULLETTYPETHREE = 2;
	public static Bullet createBullet(int bulletType){
		switch(bulletType){
			case BULLETTYPEONE:
				return new TypeOneBullet();
			case BULLETTYPETWO:
				return new TypeTwoBullet();
			case BULLETTYPETHREE:
				return new TypeThreeBullet();
			default:
				return null;
		}
	}
}

Bullet.class

public class Bullet {

}

TypeOneBullet.class

public class TypeOneBullet extends Bullet{
	public TypeOneBullet(){
		System.out.println("产生出类型一子弹");
	}
}

TypeTwoBullet.class

public class TypeTwoBullet extends Bullet{
	public TypeTwoBullet(){
		System.out.println("产生出类型二子弹");
	}
}

TypeThreeBullet.class

public class TypeThreeBullet extends Bullet{
	public TypeThreeBullet(){
		System.out.println("产生出类型三子弹");
	}
}

最后写了一个Main.class来实现以上类的功能.

public class Main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		BulletFactory.createBullet(BulletFactory.BULLETTYPEONE);
		BulletFactory.createBullet(BulletFactory.BULLETTYPETWO);
		BulletFactory.createBullet(BulletFactory.BULLETTYPETHREE);
	}

}

运行结果如下:

产生出类型一子弹
产生出类型二子弹
产生出类型三子弹

总结:

简单工厂设计模式体现了类封装的优点,使得代码耦合性降低,类与类之间的关系简洁明了.





 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值