공장 모드(Factory)
왜 공장 모델은 이렇게 자주 사용합니까?공장 모델은 실례 대상을 만드는 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");
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
개인 FLEX 지식 라이브러리 작업 노트[size=large]1、 이 방법은 TileWindows 팝업 창에 있습니다. TitleWindows의 maxWidth와 maxHeight를 지정하지 않으면 최대 값이 화면 전체에 깔립니다. 페이지의minHeigh...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.