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