`

工厂模式(Factory)

阅读更多

工厂模式是我们最常用的模式了,著名的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");
		}
	}

}
分享到:
评论

相关推荐

    专题资料(2021-2022年)Java设计模式之工厂模式Factory.doc

    【Java设计模式之工厂模式Factory】是面向对象编程中一种重要的设计模式,它提供了一种创建对象的最佳方式。工厂模式的主要思想是将对象的创建过程封装起来,使得创建过程独立于使用过程,使得代码更加灵活,易于...

    工厂模式FactoryMode

    工厂模式是一种常用的面向对象设计模式,它属于创建型设计模式,旨在提供一种创建对象的最佳方式。在工厂模式中,当客户端请求创建一个产品对象时,它不会直接创建,而是调用一个专门的工厂对象来完成这个任务。这样...

    工厂模式:简单工厂模式、工厂方法模式、抽象工厂模式

    而"Factory"可能是一个代码示例,展示了工厂模式的具体实现,包括以上提到的三种模式。 通过学习和理解这三种工厂模式,开发者可以更好地组织代码,降低模块间的耦合,提高软件的可维护性和可扩展性。在实际开发...

    PHP设计模式(一)工厂模式Factory实例详解【创建型】

    1. **工厂角色(Factory)**:这是工厂模式的核心,它负责创建产品对象,具体的创建过程对外部世界是封装的。 2. **产品角色(Product)**:工厂模式所创建的所有对象的超类,定义了所有对象都具有的公共接口,这样...

    工厂方法模式(FactoryMethod)

    工厂方法模式是面向对象设计模式中的行为型模式之一,它提供了一种创建对象的最佳方式。在工厂方法模式中,一个工厂类负责创建对象,而具体的创建过程被延迟到了子类中,使得子类可以在不修改原有代码的基础上决定...

    Head First 设计模式 (四) 工厂模式(factory pattern) C++实现

    1. **抽象工厂(Abstract Factory)**:这是工厂模式的核心接口,定义了创建产品对象的公共接口。在C++中,通常用抽象类或者纯虚函数接口来表示。 2. **具体工厂(Concrete Factory)**:实现了抽象工厂接口,负责...

    Java设计模式之工厂模式(Factory)

    1. **简单工厂模式(Simple Factory)**:适用于需求较为简单的情况,主要负责创建一系列相关的对象。 2. **工厂方法模式(Factory Method)**:用于处理不同类型的对象创建过程,提供了一种接口来创建一系列相关或...

    JAVA设计模式(01):创建型-工厂模式【简单工厂模式】(Simple Factory)

    **简单工厂模式**是软件设计模式中的一种,属于创建型模式。在Java编程中,它是一种用于创建对象的简便方法,将对象的实例化过程封装到一个单独的工厂类中,使得客户端代码无需直接调用具体类的构造函数,而是通过...

    [创建型模式] head first 设计模式之工厂模式(Factory)

    工厂方法(Factory Method)是工厂模式的一种具体实现,它是《Head First 设计模式》这本书中讲解的重点之一。在这个模式中,一个工厂类声明了一个创建对象的抽象方法,但并不实现这个方法。而是由子类决定要实例化...

    qt工厂模式例子qt简单工程模式源码

    参考如下博客,亲自实践了一个QT的工厂模式,亲测可用,编译运行实测。 我用qt5.6,在windows下编译并运行测试,正常。 https://blog.csdn.net/baidu_33570760/article/details/71159808 1. Qt工厂模式源码 2. C++...

    Java设计模式之工厂模式(Factory模式)介绍

    **工厂模式**是一种常见的设计模式,它在Java中被广泛应用于创建对象实例。工厂模式的主要目的是将对象的创建过程封装起来,使得代码更加灵活且易于维护。通过使用工厂模式,我们可以将实例化对象的责任从客户端代码...

    创建型模式之抽象工厂模式(Abstract Factory Pattern)

    抽象工厂模式是设计模式中的一种创建型模式,其主要目的是为了解耦客户端代码与具体产品的实现。在软件工程中,当系统需要根据不同的平台、环境或者配置产生一系列相关对象,而这些对象之间的关系又非常复杂时,抽象...

    走进设计模式之抽象工厂(Abstract Factory)

    1. **模式结构**:抽象工厂模式通常包括抽象工厂接口(AbstractFactory),具体工厂类(ConcreteFactory),抽象产品接口(Product)以及具体产品类(ConcreteProduct)。抽象工厂定义了创建产品的方法,而具体工厂...

    工厂模式详尽源码

    在软件设计领域,工厂模式是一种广泛应用的创建型设计模式,其主要目的是为了封装对象的创建过程,使得客户端代码可以无须关心具体的对象是如何被创建的,只需要知道如何使用即可。工厂模式通过提供一个统一的接口...

    工厂模式(简单工厂,普通工厂,抽象工厂)代码java

    工厂模式分为三种主要类型:简单工厂模式、普通工厂模式(也称为工厂方法模式)和抽象工厂模式。 1. **简单工厂模式**: - 简单工厂模式中,有一个中心工厂类,它负责根据输入条件(通常是一个参数)来创建具体的...

    简单工厂模式,工厂方法模式,抽象工厂模式

    简单工厂模式(Simple Factory Pattern)是一种静态工厂方法,它通过一个公共的工厂类来创建对象。这个工厂类通常包含一个或多个静态方法,用于根据输入参数创建不同类型的实例。这种模式的优点在于客户端代码无需...

    抽象工厂模式abstractFactory

    抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式,它提供了一种创建对象集合的接口,而无需指定具体的产品类型。这种模式适用于当系统需要在不同平台或环境中创建一组相关或相互依赖的对象时,而这些...

Global site tag (gtag.js) - Google Analytics