팩토리 패턴을 코딩 할 수 있습니까? 추상 클래스를 사용하면됩니까?추상 클래스의 팩토리 패턴 사용
예를 들어 전자 메일을 파싱 중이며 전자 메일 유형은 여러 가지이며 각 전자 메일 유형마다 자체 파서 클래스가 있으며 모든 파서 클래스는 몇 가지 공통 코드가있는 기본 추상 파서 클래스를 확장합니다. 내가 공장 (EmailParserFactory)이 해당 이메일 파서
건을 얻기 위해 전화를 서버에서 읽어 각 이메일에 대한
공장 패턴으로 공장이 고전 자바 공장 패턴 (공통 인터페이스에 의존한다는 것이다 " 모양 "인터페이스입니다)
Factory UML
내 예제에서는 내 기본 파서에서 몇 가지 일반적인 논리를 유지하고 그래서 나는 그것을 추상 클래스가 필요합니다.
공장 패턴이 올바른 방법인지 잘 모릅니다.
EmailParser parser EmailParserFactory.getAppropriateEmailParser(email) ;
ParsedEmail = parser.getParsedEmail(email) -- parser is already the appropriate parser, sending it the email message will get back a parsed object.
객체 :
나는 다음과 함께했다 현재 디자인
는 EmailParserFactory
private getEmailType(emailMessage) -- will check email type
- if email subject contains feedback its a feedback email
- if the email contains GUID then its a reply email etc
EmailParser - abstract class
getBodyText() - common for all
ComplaintEmailParser - specific parser for Complaint Email
parseEmail()
FeedbackEmailParser - specific parser for Feedback Email
parseEmail()
ReplyEmailParser - specific parser for Reply Email
parseEmail()
나는 당신이 묻는 바를 정확히 따르지 않습니다. 당신은 일할 수있는 고안된 건축물을 가지고있는 것 같습니다. 여러분의'EmailParser'가 클래스가 아닌 인터페이스가 될 것을 권하고 싶지만 현재의 모든 EmailParser 구현이 확장되는 추상 기본 클래스를 가질 수없는 이유는 없습니다. 특정 우려 사항이 있습니까? 전반적인 설계 검토 요청은 너무 광범위 할 수 있습니다. –
@ user648026 -'EmailParserFactory.getAppropriateEmailParser (email)'정적 호출을 제외하고 구현은 정적 팩토리에 가깝습니다. 그러나 파싱 된 모든 전자 메일이 동일한 _type_이며 공통적으로 처리 될 수있는 경우 팩터 리 메서드 인 getEmailParser()를 사용하여 팩터 리 메서드에 대한 최상의 사용 사례로, 추상 EmailProcessor (일반 처리 코드 포함)로 작성자, 구체 작성자를 SpecificEmailParser로 사용합니다. 유사한 질문에 대한 이전 답변을 참조하십시오 - https://stackoverflow.com/questions/46384358/what-are-the-real-benefits-of-using-the-abstract-factory-in-the-following-exampl/ 46407888 # 46407888 –