工厂模式分析----Factory Pattern_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 工厂模式分析----Factory Pattern

工厂模式分析----Factory Pattern

 2014/4/26 0:18:33  旭冬冬  程序员俱乐部  我要评论(0)
  • 摘要:工厂模式定义:实例化对象,用工厂方法代替new操作。工厂模式是我们最常用的模式了,因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如Aa=newA()工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑使用工厂模式,虽然这样做,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量。那么具体怎么用呢?代码奉上/***生产枪的工厂接口**@authorStar**/publicinterfaceGunFactory
  • 标签:模式 分析 CTO
工厂模式定义:实例化对象,用工厂方法代替new操作。
工厂模式是我们最常用的模式了,因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑使用工厂模式,虽然这样做,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量。那么具体怎么用呢?代码奉上

class="java" name="code">
/**
 * 生产枪的工厂接口
 * 
 * @author Star
 * 
 */
public interface GunFactory {
	public Gun createFootGun();// 创建步枪

	public Gun createHandGun();// 创建手(***)枪

	public Gun createQuickGun();// 创建冲锋枪
}


/**
 * 生产便宜一类枪
 * 
 * @author Star
 * 
 */
public class CheapGunFactory implements GunFactory {

	public Gun createFootGun() {
		return new FootGun("小米加步枪", 50);
	}

	public Gun createHandGun() {
		return new HandGun("三八大盖", 20);
	}

	public Gun createQuickGun() {
		return new QuickGun("解放军冲锋枪", 100);
	}

}

/**
 * 贵的一类枪
 * @author Star
 *
 */
public class ExpensiveGunFactory implements GunFactory {

	public Gun createFootGun() {

		return new FootGun("德国造步枪", 150);
	}

	public Gun createHandGun() {
		return new FootGun("美国造手(***)枪", 120);

	}

	public Gun createQuickGun() {
		return new FootGun("AK47", 250);

	}

}

枪的具体类
/**
 * 枪的接口类
 * 
 * @author Star
 * 
 */
public abstract class Gun {
	protected String gunName;// 枪名
	protected int power;// 杀伤力

	// 射击
	public void shoot() {
       System.out.println(gunName+" 射击的杀伤力为: "+power);
	}

	public Gun(String gunName, int power) {
		this.gunName = gunName;
		this.power = power;
	}
}

/**
 * 步枪
 * @author Star
 *
 */
public class FootGun extends Gun{

	public FootGun(String gunName, int power) {
		super(gunName, power);
	}

	//射击
	public void shoot() {
		super.shoot();
	}

}

/**
 * 手(***)枪
 * @author Star
 *
 */
public class HandGun extends Gun {

	public HandGun(String gunName, int power) {
		super(gunName, power);
	}

	public void shoot() {
		super.shoot();
	}

}

/**
 * 冲锋枪
 * @author Star
 *
 */
public class QuickGun extends Gun {

	public QuickGun(String gunName, int power) {
		super(gunName, power);
	}

	public void shoot() {
		super.shoot();
	}
}

主函数测试类
public class FactoryMain {

	public static void main(String[] args) {
		GunFactory factory = new CheapGunFactory();
		Gun gun = factory.createHandGun();
		gun.shoot();
		gun = factory.createFootGun();
		gun.shoot();
		gun = factory.createQuickGun();
		gun.shoot();

		factory = new ExpensiveGunFactory();
		gun = factory.createHandGun();
		gun.shoot();
		gun = factory.createFootGun();
		gun.shoot();
		gun = factory.createQuickGun();
		gun.shoot();

	}

}

发表评论
用户名: 匿名