1 代码演练
1.1 未使用简单工厂模式代码
1.2 使用简单工厂模式
1.3 使用反射机制简单工行模式
1 代码演练
1.1 未使用简单工厂模式代码
测试类:
package com.geely.design.pattern.creational.simplefactory; public class Test { /** * 注:此为反例, * 没有用简单工厂模式之前,需要new对象。 * @param args */ public static void main(String [] args){ Video video = new JavaVideo(); video .printVideo(); } }
父类Video:
package com.geely.design.pattern.creational.simplefactory; public abstract class Video { public abstract void printVideo(); }
子类javaVideo:
package com.geely.design.pattern.creational.simplefactory; public class JavaVideo extends Video{ @Override public void printVideo() { System.out.println("录制java视频"); } }
子类netVideo:
package com.geely.design.pattern.creational.simplefactory; public class NetVideo extends Video{ @Override public void printVideo() { System.out.println("录制.Net视频!"); } }
打印结果:
录制java视频
Process finished with exit code 0
1.2 使用简单工厂模式
测试类:
package com.geely.design.pattern.creational.simplefactory; public class Test { /** * 注:此为反例, * 没有用简单工厂模式之前,需要new对象。 * @param args */ // public static void main(String [] args){ // Video video = new JavaVideo(); // video .printVideo(); // } /** * 2 简单工厂模式 * 这里通过参数调取工厂类,直接获得工厂子类 * @param args */ public static void main(String [] args){ VideoFactory videoFactory = new VideoFactory(); Video video = videoFactory.getVideo("net"); video .printVideo(); } }
工厂类:
package com.geely.design.pattern.creational.simplefactory; public class VideoFactory { private Video video = null; public Video getVideo(String param) { if("java".equals(param)){ return new JavaVideo(); }else if("net".equals(param)){ return new NetVideo(); }else{ return null; } } }
父类(同上):
子类javaVideo:(同上)
子类netVideo(同上):
打印日志:
录制.Net视频!
Process finished with exit code 0
1.3 使用反射机制简单工行模式