读书人

容易工厂方法

发布时间: 2012-08-24 10:00:20 作者: rapoo

简单工厂方法

?

?

?

public class SimpleFactory { public static Product factoryProduct(String productName) { if(productName.equals("product1")) { return new Product1(); }else if(productName.equals("product2")) { return new Product2(); } return null; }}

?

?

public class AnimalFactory {/** * 静态工厂方法 * @param clazz class * @return 传进来的类的实例 */public static Object factory(Class clazz) {try {return clazz.newInstance();} catch (InstantiationException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();}return null;}}

?

?

?

Locale locale = Locale.FRENCH;Date date = new Date();String now = DateFormat.getTimeInstance(DateFormat.DEFAULT, locale).format(date);try {date = DateFormat.getDateInstance(DateFormat.DEFAULT, locale).parse("16 nov. 01");System.out.println(date);} catch (ParseException e) {System.out.println("Parsing exception:" + e);}

?

public static Boolean valueOf(boolean b) { return (b ? TRUE : FALSE); } public static Boolean valueOf(String s) {return toBoolean(s) ? TRUE : FALSE; }

?

Integer a = Integer.valueOf(3); public static Integer valueOf(int i) {final int offset = 128;if (i >= -128 && i <= 127) { // must cache return IntegerCache.cache[i + offset];} return new Integer(i); } private static class IntegerCache {private IntegerCache(){}static final Integer cache[] = new Integer[-(-128) + 127 + 1];static { for(int i = 0; i < cache.length; i++)cache[i] = new Integer(i - 128);}}

?

private static Calendar createCalendar(TimeZone zone, Locale aLocale) {// If the specified locale is a Thai locale, returns a BuddhistCalendar// instance.if ("th".equals(aLocale.getLanguage()) && ("TH".equals(aLocale.getCountry()))) { return new sun.util.BuddhistCalendar(zone, aLocale);} else if ("JP".equals(aLocale.getVariant()) && "JP".equals(aLocale.getCountry()) && "ja".equals(aLocale.getLanguage())) { return new JapaneseImperialCalendar(zone, aLocale);} // else create the default calendar return new GregorianCalendar(zone, aLocale); }

?

4. spring.core用来判断jdk的版本:

http://www.blogjava.net/killme2008/archive/2007/04/11/109675.html

?

简单工厂模式是否支持 OCP 呢?
答案:只能在有限程度上支持。因为 OCP 要求不能对以 “ 发布 ” 的行为做修改,例如字段或方法,但是可 以进行扩展,可以增加字段或方法。而简单工厂模式中的工厂类不能做到这一点,当加入新的产品类的时候不得不修改工厂类创建产品方法的逻辑。

?

?

读书人网 >软件架构设计

热点推荐