码迷,mamicode.com
首页 > 其他好文 > 详细

模式的秘密之工厂模式

时间:2018-03-03 01:07:02      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:equal   决定   dex   height   tor   工厂模式   包括   发型   test   

工厂模式概念:实例化对象,用工厂模式代替new操作

                         工厂模式包括工厂方法模式和抽象工厂模式

       抽象工厂模式是工厂方法模式的扩展

工厂模式的意图:定义一个接口来创建对象,但让子类决定哪些类需要被实例化。

        工厂方法把实例化的工作推迟到子类中去实现。

工厂方法模式类图

技术分享图片

package com.fyf;
/**
 * 发型接口
 * @author 18401
 *
 */
public interface HairInterface {
	
	//实现了发型
	public void draw();
}

  

package com.fyf;

/**
 * 发型工厂
 * @author 18401
 *
 */
public class HairFactory {
	/**
	 * 根据类型来创建对象
	 */
	public HairInterface getHair(String key){
		if("left".equals(key)){
			return new LetfHair();
		}else if("right".equals(key)){
			return new RightHair();
		}
		return null;
	}
	public HairInterface getHairByClass(String className){
		try {
			HairInterface hair = (HairInterface) Class.forName(className).newInstance();
			return hair;
		} catch (InstantiationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}
}

  

package com.fyf;
/**
 * 左偏分发型
 * @author 18401
 *
 */
public class LetfHair implements HairInterface {
	/**
	 * 画了一个左偏分
	 */
	@Override
	public void draw() {
		// TODO Auto-generated method stub
		System.out.println("----左偏分发型-----");
	}

}

  

package com.fyf;
/**
 * 右偏分发型
 * @author 18401
 *
 */
public class RightHair implements HairInterface {
	/**
	 * 画了一个右偏分
	 */
	@Override
	public void draw() {
		// TODO Auto-generated method stub
		System.out.println("----右偏分发型-----");
	}

}

  

package com.fyf;

public class Test {
	//客户端
	public static void main(String[] args) {
		
//		HairInterface left = new LetfHair();
//		left.draw();
		HairFactory factory = new HairFactory();
//		HairInterface left = factory.getHair("left");
//		left.draw();
		HairInterface left = factory.getHairByClass("com.fyf.LetfHair");
		left.draw();
	}
}	

  

 

模式的秘密之工厂模式

标签:equal   决定   dex   height   tor   工厂模式   包括   发型   test   

原文地址:https://www.cnblogs.com/luffe/p/8495579.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!