简单工厂模式学习
package com.factory; //产品接口 public interface Product { void craftwork(); //制作工艺 void type(); //产品特征 }
package com.factory; //鲜奶实现类 public class Creamery implements Product { @Override public void craftwork() { System.out.println("实现类制作工艺:牛奶+除菌=鲜奶"); } @Override public void type() { System.out.println("实现类产品特征:原味浓香"); } }
package com.factory; //酸奶实现类 public class Yoghourt implements Product { @Override public void craftwork() { System.out.println("实现类制作工艺:牛奶+酵母菌+糖=酸奶"); } @Override public void type() { System.out.println("实现类产品特征:酸甜可口"); } }
package com.factory; //自定义异常 public class BadException extends Exception { public BadException(String msg){ super(msg); } }
package com.factory; //静态工厂方法 public class StaticFactory { public static Product factory(String str) throws BadException{ if(str.equalsIgnoreCase("yoghourt")){ System.out.println("静态工厂:生产酸奶"); return new Yoghourt(); }else if(str.equalsIgnoreCase("creamery")){ System.out.println("静态工厂:生产鲜奶"); return new Creamery(); }else{ throw new BadException("没有该类型产品!"); } } }
测试代码:
package com.factory; //测试类 public class Test { public static void main(String[] args) { try { Product y = StaticFactory.factory("Yoghourt"); y.craftwork(); y.type(); Product c = StaticFactory.factory("Creamery"); c.craftwork(); c.type(); } catch (BadException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
执行结果:
静态工厂:生产酸奶
实现类制作工艺:牛奶+酵母菌+糖=酸奶
实现类产品特征:酸甜可口
静态工厂:生产鲜奶
实现类制作工艺:牛奶+除菌=鲜奶
实现类产品特征:原味浓香
总结:
原文:http://www.cnblogs.com/nikey/p/6437815.html