Upload
hyeonjeong-byeon
View
1.568
Download
2
Embed Size (px)
Citation preview
백엔드스터디Design Patterns
Factory Pattern
참고도서
Head First Design Patterns 자바객체지향디자인패턴
● ‘우리가사용하는 new’● Factory Pattern● Simple Factory● Factory Method Pattern● Dependency Inversion Principle(DI)● Abstract Factory Pattern
‘우리가사용하는 new’
- new 를사용하는것은구상클래스의인스턴스를만드는것
- 자바에서객체를생성할때는 new 를사용한다 .
- Pizza pizza = new ChessesPizza();- ‘변화 ' 되는것때문에 new 를사용하는데있어서
조심해야함- 바뀔수있는부분을찾아내서바뀌지않는부분과
분리하는원칙을생각해보자 .- 객체를생성할때어떻게할것인지 ?
Factory Pattern
- 팩토리를쓰면객체생성을캡슐화할수있다 .
- 모든팩토리패턴에서는애플리케이션의구상클래스에 대한의존성을줄여줌으로써 느슨한결합 을도와준다 .
- 팩토리는구상클래스가아닌추상클래스 / 인터페이스에 맞춰서코딩할수있게한다 .
Simple Factory - 엄밀하게말하자면디자인패턴은아님 .
Factory Method Pattern
- 상속을활용- 객체를생성하기위한인터페이스를정의하는데
어떤클래스의인스턴스를만들지는 서브클래스에서결정하게만든다 . ( 객체생성이 서브클래스에게위임 )
- 클래스의인스턴스를만드는일을서브클래스에게맡김
Factory Method Pattern
Dependency Inversion Principle - 의존성뒤집기원칙
- 추상화된것에의존하도록만들자 . 구상클래스에의존하도록 만들지않도록한다 .
- “ ” 특정구현이아닌인터페이스에맞춰서프로그래밍한다 는 원칙보다추상화를더많이강조
- 고수준의구성요소가저수준구성요소에의존하면안된다 . (‘고수준 ' ‘구성요소는다른 저수준 ' 구성요소에의해정의되는행동이
들어있는구성요소를말함 )
- 구상클래스처럼구체적인것이아닌추상클래스나 인터페이스와같이추상적인것에의존하는코드를만들자 .
Abstract Factory Pattern
- 객체의구성을활용
- 객체생성이팩토리인터페이스에서선언한메소드들에서구현
- 인터페이스를이용하여서로연관된 , 또는의존하는 객체를구상클래스를지정하지않고도생성할수있다 .
- 구상클래스에직접의존하지않고도서로관련된 객체들로이루어진제품군을만들기위한용도로사용