浏览 1274 次
锁定老帖子 主题:工厂模式(Factory)
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-04-19
最后修改:2010-04-19
工厂模式是我们最常用的模式了,著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见。 为什么工厂模式是如此常用?因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑实用工厂模式,虽然这样做,可能多做一些工作,但会给你系统带来更大的可扩 展性和尽量少的修改量。
此例子源于需要在很多地方的姓名和电话号码上补充验证。 fixedTel = CustomerPropertyModelFactory.createTelModel(this, true); mobile = new StringFieldModel(this, true); mobile为普通的创建方式,而fixedTel为我们工厂创建出来的。我们依然是new出来了对象,而工厂CustomerPropertyModelFactory对其进行了加工。 public class CustomerPropertyModelFactory { public static StringFieldModel createCustomerNameModel( CompositeModel parent, boolean required) { return createCustomerNameModel(parent, null, null, required); } public static StringFieldModel createCustomerNameModel(CompositeModel parent,Object target,String fieldName, boolean required){ StringFieldModel customerName = new StringFieldModel(parent,target,fieldName,required); if(Configuration.isSameValueTo(ConfigurationCode.TRUE, ConfigurationCode.IS_VALIDATE_NAME)){ customerName.addFieldValidator(new NameValidator()); } return customerName; } public static StringFieldModel createTelModel(CompositeModel parent, boolean required){ return createTelModel(parent, null, null, required); } public static StringFieldModel createTelModel(CompositeModel parent, Object target, String fieldName, boolean required) { StringFieldModel tel = new StringFieldModel(parent, target, fieldName, required); if (Configuration.isSameValueTo(ConfigurationCode.TRUE, ConfigurationCode.IS_VALIDATE_TELE_IS_NUMBER)) { tel.addFieldValidator(new NumberValidator()); } return tel; } static class NameValidator implements IFieldValidator { public String isValid(Object value) { String cmtsUsingDHCPUserName = (String) value; if (cmtsUsingDHCPUserName == null || "".equals(cmtsUsingDHCPUserName)) { //$NON-NLS-1$ return null; } if (cmtsUsingDHCPUserName.matches("[0-9A-Za-z\\s]*")) { //$NON-NLS-1$ return null; } return new Messages() .getString("ModifyBroadbandLoginSectionModel.0"); } } } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |