팩토리 메소드 패턴

이한수·2022년 6월 28일
0

디자인 패턴

목록 보기
2/5
post-thumbnail

팩토리 메소드 패턴

객체의 생성을 캡슐화 하는 패턴이다.

풀어서 말하자면 ,, 뭐라 해야 할까..

보통 객체를 생성할 때 사용하고자 하는 클래스의** 생성자를

이용하여 인스턴스를 생성** 한다.

이 때 클라이언트는 객체를 직접 생성하는 것이 아닌, 팩토리

라는 공장을 통해 가져오는 것이다.

public interface Job{
	void employment();
}
@Slf4j
public class Doctor implement Job{

	@Override
    public void employment(){
    	log.info("의사로 취업!!");	
    }
    
}


@Slf4j
public class Nurse implement Job{
	
    @Override
   	public void employment(){
    	log.info("간호사로 취업!!");
    }

}

Job라는 Interface를 상속 받은 2개의 직업이 있다.

public class JobFactory{
	
    public Job getJob(String job){
    	if(job.equals("의사")) {
        
        	return new Doctor();
            
        }else if(job.equals("간호사")){
        
        	return new Nurse();
            
        }
    }
}

Job객체를 생성하여 반환해주는 메소드를 가진 Factory 클래스다.

	JobFactory jobFactory = new JobFactory();
    
    Scanner scan = new Scanner(System.in);
    
    //의존 x
    
    String job1 =scan.next();		//의사
    Job doctor = jobFactory.getJob(job1);
    
    String job2 =scan.next();		//간호사
    Job nurse = jobFactory.getJob(job2);

장점

  • 클라이언트 코드와 결합도를 낮춘다.

위에 코드를 인스턴스를 생성할 때,
객체의 생성을 JobFactory에 위임함으로써 , 클라이언트는
인스턴스를 얻을 때 구체 클래스에 의존하지 않는다.

  • 유연성과 확장성이 뛰어나다.

예를 들어 , 하나의 직업을 추가한다고 가정하였을 때 ,
Job인터페이스를 상속받아 구현해주기만 하면 된다.
클라이언트를 손볼 필요 없이 확장이 가능 하다.

단점

-성할 클래스의 종류를 증가 시키고자 할 때마다 클래스를 생성하고 , 그만큼 관리해야할 클래스가 늘어난다.

profile
성실하게

0개의 댓글