-
객체 지향 프로그래밍 입문 #2개발 2022. 8. 7. 16:36
# 다형성 (Polymorhpism)
- 여러(poly) 모습(morph)을 갖는 것
- 객체 지향에서는 한 객체가 여러 타입을 갖는 것
- 즉 한 객체가 여러 타입의 기능을 제공
- 타입 상속으로 다형성 구현
# 추상화 (Abstraction)
- 데이터나 프로세스 등을 의미가 비슷한 개념이나 의미 있는 표현을 정의하는 과정
- 추상화를 통해 변경에 용이한 코드 작성을 유도
추상화 시도 시점
추상화는 의존 대상이 변경하는 시점에..
- 아직 존재하지 않는 기능에 대한 이른 추상화는 잘못된 추상화 가능성을 높이고, 복잡도만 증가 시킬 우려가 있다.
- 실제 변경/확장이 발생할 때 추상화를 시도 한다.
- 추상화를 잘하려면 구현한 이유가 무엇 때문인지 생각해야 한다.
// 초기 주문 서비스 Class public class OrderService { private MailSender sender; public void order(...) { ... sender.send(message); } }
// SMS 발송 기능 추가 public class OrderService { private MailSender sender; private SmsService smsService; public void order(...) { ... sender.send(message); ... smsService.send(smsMsg); } }
// Notifier Class로 통보 기능 추상화 public class OrderService { private Notifier notifier; public void order(...) { ... notifier.notify(noti); } }
'개발' 카테고리의 다른 글
오해의 소지 없이, 단단하게 "use strict" (0) 2022.09.06 웹 브라우저에 URL을 입력하면 일어나는 일 (0) 2022.09.04 객체 지향 프로그래밍 입문 #1 (0) 2022.08.07 JS - GMT, UTC 그리고 Date 객체 (0) 2022.07.06 Custom Hook과 Headless UI (0) 2022.06.19