정보처리기사 실기소프트웨어 설계디자인 패턴 식별난이도 3SHORT_ANSWER

정보처리기사 실기 디자인 패턴 식별 기출문제 #742

문제

다음은 어떤 디자인 패턴의 구현 코드이다. 이 패턴의 명칭을 쓰시오.

Java
interface DatabaseConnection { void connect(); void execute(String query); } class MySQLConnection implements DatabaseConnection { public void connect() { System.out.println("MySQL 연결"); } public void execute(String query) { System.out.println("MySQL: " + query); } } class PostgreSQLConnection implements DatabaseConnection { public void connect() { System.out.println("PostgreSQL 연결"); } public void execute(String query) { System.out.println("PostgreSQL: " + query); } } abstract class ConnectionCreator { public abstract DatabaseConnection createConnection(); public void processQuery(String query) { DatabaseConnection conn = createConnection(); conn.connect(); conn.execute(query); } } class MySQLCreator extends ConnectionCreator { public DatabaseConnection createConnection() { return new MySQLConnection(); } } class PostgreSQLCreator extends ConnectionCreator { public DatabaseConnection createConnection() { return new PostgreSQLConnection(); } }

위 코드에서 ConnectionCreator는 구체적인 Connection 클래스를 알지 못하면서도 서브클래스가 어떤 객체를 생성할지 결정하도록 위임하고 있다. 이러한 생성 패턴은?

정답

팩토리 메소드 패턴

팩토리 메소드 패턴팩토리 메서드 패턴Factory Method Pattern팩토리 메소드팩토리 메서드

해설

이 코드는 팩토리 메소드 패턴의 전형적인 구현이다. ConnectionCreator라는 추상 클래스가 createConnection()이라는 추상 메소드를 정의하고, MySQLCreator와 PostgreSQLCreator가 이를 구체적으로 구현한다. 클라이언트(processQuery 메소드)는 구체적인 Connection 클래스를 알 필요 없이 추상 인터페이스를 통해 객체를 사용할 수 있으며, 객체 생성의 책임은 서브클래스에 위임된다. 이는 개방-폐쇄 원칙을 따르며, 새로운 데이터베이스 타입 추가 시 기존 코드 변경 없이 확장 가능하다.

이런 문제 20~50개를 한 번에 풀어보세요

매번 새로 추가되는 모의고사 + 오답 자동 복습 + 회차별 실력 추적. 회원가입 후 무료 이용.