심심한잉여의 잡동사니

[디자인 패턴]추상 팩토리 패턴 (Abstract Factory Pattern) 이란? 본문

코딩일기/자료 구조

[디자인 패턴]추상 팩토리 패턴 (Abstract Factory Pattern) 이란?

심심한잉여 2022. 11. 30. 14:09
반응형

추상 팩토리 패턴(Abstract Factory Pattern)이란?
서로 관련이 있는 객체들을 통쨰로 묶어서 팩토리 클래스로 만들고 이들 팩토리를 조건에 따라 생성하도록 다시 팩토리를 만들어 객체를 생성하는 패턴

간단하게 보자면 팩토리 메서드 패턴을 한 단계 더 캡슐화한 방식이라 볼 수 있다.

public class Phone {
	private String prodName;
    
    public void setProdName(String prodName){
    	this.prodName = prodName;
    }
    public String getProdName(){
    	return this.prodName;
    }
}
public class ApplePhone implements Phone{

	public ApplePhone(){
    	super.setProdName = "iPhone";
    }

}
public class SamsungPhone implements Phone{

	public SamsungPhone(){
    	super.setProdName = "galaxyPhone";
    }

}
public class PhoneFactory{

	public Phone createPhone(String brand){
    	Phone phone = null;
        switch(brand){
        	case "Samsung" :
            	phone = new SamsungPhone();
                break;
            case "Apple" :
            	phone = new ApplePhone();
                break;
        }
        return phone;
    }

}
public class Test{

	public static void main(String args[]){
    	PhoneFactory test = new PhoneFactory();
        System.out.print(test.createPhone.getProdName());
    }

}

위 코드와 같이 클래스들이 정의되어 있다고 했을 때 브랜드에 맞게 객체를 생성되게 할 건지 결정 후 구현하게 하는 것을 뜻한다.

더 깊은 깊이(Depth)를 가져도 되며 이에 따라 코드가 더 길어질 것을 생각해야한다.

현재까지 구현한 것으로 끝낸다면 팩토리 메서드 패턴에 가깝다.

 

public class PackgeFactory{
	
	public package createPackge(String brand){
    	Package	package = null;
        
        switch(brand){
        	case "Samsung" :
            		package = new SamsungPackage();
                break;
            case "Apple" :
            		package = new ApplePackage();
                break;
        }
        
        return package;
    }

}

위와 같이 Phone 외에도 다른 객체가 있다 가정했을 경우 하나의 패키지로 묶어 만드는것을 추상메서드패턴이라고 할 수 있다. 

간단히 정리하면 패턴 적용 전에는 하나하나 Phone, case 등의 구성품마다 팩토리를 만들어 어떤 객체를 형성했지만 추상 팩토리 패턴을 적용하게 되면 관련된 객체들을 한번에 캡슐화하여 팩토리를 만들어 일관된 객체를 생성하도록 한 것이다.

반응형