공장 모드(Factory)

2582 단어 작업mobile
공장 모델은 우리가 가장 자주 사용하는 모델이다. 유명한 Jive포럼은 공장 모델을 대량으로 사용했고 공장 모델은 자바 프로그램 시스템에서 어디서나 볼 수 있다고 할 수 있다.
왜 공장 모델은 이렇게 자주 사용합니까?공장 모델은 실례 대상을 만드는 new에 해당하기 때문에 우리는 클래스클래스클래스클래스클래스클래스클래스클래스에 따라 실례 대상을 생성해야 한다. 예를 들어 A a=new A() 공장 모델도 실례 대상을 만드는 데 사용되기 때문에 앞으로 new를 할 때 여러 가지 주의를 기울여야 한다. 실용 공장 모델을 고려할 수 있는지, 이렇게 하면 일을 많이 할 수 있지만 시스템에 더 큰 확장성과 최소한의 수정량을 가져다 줄 수 있다.
 
이 예는 많은 지역의 성명과 전화번호에 대한 추가 검증이 필요한 데서 비롯되었다.
fixedTel = CustomerPropertyModelFactory.createTelModel(this, true);
mobile = new StringFieldModel(this, true);

모바일은 일반적인 창설 방식이고fixedTel은 우리 공장을 위해 창설되었다.우리는 여전히 new에서 대상이 나왔고, 공장 Customer Property Model Factory는 이를 가공했다.
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");
		}
	}

}

좋은 웹페이지 즐겨찾기