1、简单的工厂模式

需求,妇娲做做各人各样的人,黄色人,白色人,黑色人。。。。,如果一个new得累死

 

1,先定义一个Human接口,然后再根据人种去实现它


<span style="font-family: Arial, Helvetica, sans-serif;"></span>
 * 人类接口
 * @author xieyang
 *
 */
public interface Human {

	/**
	 * 不同的人,笑是不一样的
	 */
	public void laugh();
	
	/**
	 * 哭
	 */
	public void cry();
	
	/**
	 * 说话
	 */
	public void talk();
	
	/**.....**/
	
}

定义一个黄种人

public class YellowHuman implements Human {

	private static final String TAG = "Human";

	@Override
	public void laugh() {
		
		Log.i(TAG,"YellowHuman laugh");
		
	}

	@Override
	public void cry() {
		Log.i(TAG,"YellowHuman cry");
		
	}

	@Override
	public void talk() {
		Log.i(TAG,"YellowHuman talk");
		
	}

}
定义一个白种人

public class WhiteHuman implements Human {

	private static final String TAG = "Human";
	@Override
	public void laugh() {
		
		Log.i(TAG,"WhiteHuman laugh");
	}
	@Override
	public void cry() {
		Log.i(TAG,"WhiteHuman cry");
	}
	@Override
	public void talk() {
		Log.i(TAG,"WhiteHuman talk");
	}

}


定义一个黑种人

public class BlackHuman implements Human {

	private static final String TAG = "Human";
	@Override
	public void laugh() {
		Log.i(TAG,"BlackHuman laugh");
	}

	@Override
	public void cry() {
		Log.i(TAG,"BlackHuman cry");
	}

	@Override
	public void talk() {
		Log.i(TAG,"BlackHuman talk");
	}
}


2,定义人类的工厂类,主要是利用反射,创建实例

/**
 * 造人工厂
 * @author xieyang
 *
 */
public class HumanFactory {

	private static final String TAG = "HumanFactory";

	/**
	 * 指定创建草某类人
	 * @param c
	 * @return
	 */
	public static Human createHuman(Class<? extends Human> c){
		
		Human human = null;
		try {
			human = (Human) Class.forName(c.getName()).newInstance();
		} catch (InstantiationException e) {
			Log.e(TAG,"做人出错!!!");
		} catch (IllegalAccessException e) {
			Log.e(TAG,"做人定义有错!!!");
		} catch (ClassNotFoundException e) {
			Log.e(TAG,"没法找到你要定义的人类!!!:"+c.getName());
		}
		return human;
	}
	
}
3,Client调用工厂创建人类

	public void createHuman(View view) {
		Human yellowHuman = HumanFactory.createHuman(YellowHuman.class);
		yellowHuman.cry();
		yellowHuman.laugh();
		yellowHuman.talk();

	}

通单简工厂模式,很容易方便地创建,不同的实例对像,这种模式是利用类的多态的特征。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值