Both sides previous revisionPrevious revisionNext revision | Previous revision |
design_pattern:abstract_factory_pattern [2017/10/28 16:32] – 작성 ledyx | design_pattern:abstract_factory_pattern [2021/02/07 03:24] (current) – [Abstract Factory Pattern] ledyx |
---|
* 부품의 구체적인 구현에는 주목하지 않고, **인터페이스(API)에 주목**. | * 부품의 구체적인 구현에는 주목하지 않고, **인터페이스(API)에 주목**. |
* **추상적인 공장**(Abstract Factory)에서 **추상적인 부품**을 조립하고 **추상적인 제품**을 완성한다. | * **추상적인 공장**(Abstract Factory)에서 **추상적인 부품**을 조립하고 **추상적인 제품**을 완성한다. |
| * 많은 수의 연관된 하위 클래스를 특정 그룹으로 묶어 한번에 교체.\\ ex) 특정 라이브러리 배포시 OS별로 지원하는 기능이 다를 때, OS별 기능 변경을 통합적으로 변경. |
| |
{{tag>Architecture Modeling DesignPattern Creational}} | {{tag>Architecture Modeling Design_Pattern Creational}} |
| |
= Factory = | = Factory = |
| |
= Client = | = Client = |
<sxh java> | * <fc red>Client는 구체적인 부품, 제품, 공장에 대해 모른다!</fc> |
| * API만 이용! 말그대로 <fc red>추상적인 공장(Abstract Factory)에서 추상적인 부품을 조립하고 추상적인 제품을 완성한다.</fc> |
| |
| <sxh java ; highlight: [13]> |
import factory.Factory; | import factory.Factory; |
import factory.LinkItem; | import factory.LinkItem; |
| |
| |
Page page = factory.createPage(className, "By xeyez"); | Page page = factory.createPage(className, "By ledyx"); |
page.add(trary_community); | page.add(trary_community); |
page.add(tray_searchEngine); | page.add(tray_searchEngine); |
</li></ul> | </li></ul> |
</li></ul> | </li></ul> |
<hr><footer>By xeyez</footer></body> | <hr><footer>By ledyx</footer></body> |
</html> | </html> |
</sxh> | </sxh> |
| |
{{:design_pattern:abstract_factory_pattern1.jpg|}} | |
| |
| |
<br> | <br> |
</div> | </div> |
<hr><footer>By xeyez</footer></body> | <hr><footer>By ledyx</footer></body> |
</html> | </html> |
</sxh> | </sxh> |
| |
{{:design_pattern:abstract_factory_pattern2.jpg|}} | |