时间紧迫,关于工厂模式的内容有点多,要讲的话大致分为简单工厂模型,工厂方法模型,抽象工厂模型
这里 ,我就大概讲一下简单工厂模型,也是我们实际开发中用的相对比较多的
第一步,先创建工厂接口,也就是规定这个工厂是干嘛的:
1 /* 2 * 创 建 者: ouyangshengduo 3 * 创建时间: 2017年3月31日 4 * 文件名称: HairInterface.java 5 * 版权信息: 2017 Edan. All rights reserved. 6 * 文件描述: 发型接口 7 */ 8 package com.oysd.model.factory; 9 10 public interface HairInterface { 11 12 //实现了发型 13 public void draw(); 14 15 }
第二步,实现不同产品具体内容
1 /* 2 * 创 建 者: ouyangshengduo 3 * 创建时间: 2017年3月31日 4 * 文件名称: LeftHair.java 5 * 版权信息: 2017 Edan. All rights reserved. 6 * 文件描述: 7 */ 8 package com.oysd.model.factory; 9 10 public class LeftHair implements HairInterface { 11 12 /** 13 * 画一个左偏分发型 14 */ 15 @Override 16 public void draw() { 17 // TODO Auto-generated method stub 18 19 System.out.println("-----------实现了一个左偏分发型-----------"); 20 } 21 22 }
1 /* 2 * 创 建 者: ouyangshengduo 3 * 创建时间: 2017年3月31日 4 * 文件名称: RightHair.java 5 * 版权信息: 2017 Edan. All rights reserved. 6 * 文件描述: 7 */ 8 package com.oysd.model.factory; 9 10 public class RightHair implements HairInterface { 11 12 13 /** 14 * 画一个右偏分的发型 15 */ 16 @Override 17 public void draw() { 18 // TODO Auto-generated method stub 19 System.out.println("-----------实现了一个右偏分发型-----------"); 20 } 21 22 }
创建工厂类
1 /* 2 * 创 建 者: ouyangshengduo 3 * 创建时间: 2017年3月31日 4 * 文件名称: HairFactory.java 5 * 版权信息: 2017 Edan. All rights reserved. 6 * 文件描述: 7 */ 8 package com.oysd.model.factory; 9 10 public class HairFactory { 11 12 /** 13 * 发型对象实例的创建工厂 14 * @param key 15 * @return 16 */ 17 public static HairInterface newClass(String key){ 18 HairInterface hair = null; 19 switch(key){ 20 case "right": 21 hair = new RightHair(); 22 break; 23 case "left": 24 hair = new LeftHair(); 25 break; 26 default: 27 break; 28 29 } 30 return hair; 31 } 32 33 }
测试类:
1 /* 2 * 创 建 者: ouyangshengduo 3 * 创建时间: 2017年3月31日 4 * 文件名称: Client.java 5 * 版权信息: 2017 Edan. All rights reserved. 6 * 文件描述: 测试类 7 */ 8 package com.oysd.model.factory; 9 10 public class Client { 11 12 public static void main(String[] args) { 13 // TODO Auto-generated method stub 14 15 HairInterface hair = HairFactory.newClass("right"); 16 17 hair.draw(); 18 19 } 20 21 }