본문 바로가기

분류 전체보기110

ISP- 인터페이스 분리 원칙 인터페이스 분리 원칙 (Interface Segregation Principle) 인터페이스 분리 원칙은 "클라이언트는 자신이 사용하는 메소드에만 의존해야 한다."를 의미한다. 이를 쉽게 표현하면, "인터페이스는 그 인터페이스를 사용하는 클라이언트를 기준으로 분리해야 한다."라고 바꿔 말할 수 있다 예시 자동차 인터페이스 → 운전 인터페이스, 정비 인터페이스로 분리 → 이렇게 분리함으로써 정비 인터페이스 자체가 변해도 운전자 클라이언트에 영향을 주지 않음. 사용자 클라이언트 → 운전자 클라이언트, 정비사 클라이언트로 분리 ISP 예시 ISP를 적용하기 전 // ISP를 적용하지 않은 예제 interface multifunction { copy(); fax(Address from, Address to); .. 2022. 1. 21.
캐스팅 || 업캐스팅 || 다운캐스팅 || 타입스크립트 에서의 타입캐스팅 캐스팅 캐스팅이란 타입을 변환하는 것을 말하며 형변환이라고도 한다. 상속 관계에 있는 부모와 자식 클래스 간에는 서로 간의 형변환이 가능하다. 업캐스팅(Upcasting) 업캐스팅이란 자식 클래스의 객체가 부모 클래스 타입으로 형변환 되는 것을 말한다. 아래 코드에서 부모 클래스는 Person, 자식 클래스는 Student이다. 아래 코드에서 Person p = s; 부분이 업캐스팅한 부분이다. p가 Student 객체를 가리키지만, p는 Person 타입이기 때문에 Person 클래스의 멤버에만 접근이 가능하다. 그렇기 때문에 p.check에서 컴파일 타임 에러가 발생한다. class Person{ String name; Person(String name){ this.name = name; } } cl.. 2022. 1. 20.
LSP 리스코프 치환 원칙 리스코프 치환 원칙 부모 클래스의 인스턴스를 사용하는 위치에 자식 클래스의 인스턴스를 대신 사용했을 때 코드가 원래 의도대로 작동해야 한다 다시 말해서, 상속을 설명하고 있습니다 부모객체와 자식객체가 있다고 가정할 때, 자식은 당연히 부모 객체로 치환할 수 있어야 합니다! 기본적인 뜻 가장 기본적인 정의로는 A - B의 부모 자식에 대한 정의가 논리적으로 제대로된 상속이어야. 기존 프로그램이 자식 클래스인 B로 치환해도 문제 없이 작동해야한다는 것이다. 일반적으로 많이 드는 예시가 바로 직사각형을 상속한 정사각형 클래스의 예시인데, 정사각형 클래스가 직사각형 클래스를 상속해버리면, 정사각형의 특징인 '네 변의 길이는 동일하다'와 그렇지 않은 직사각형의 차이로 인해, 직사각형을 정사각형 클래스로 치환해서 .. 2022. 1. 19.
OCP-개방 폐쇄원칙 개방 폐쇄원칙 개방 폐쇄 원칙은 "확장에는 열려 있어야 하고, 변경에는 닫혀 있어야 한다."를 의미한다. 조금 더 쉽게 풀어 쓰자면, "기능을 변경하거나 확장할 수 있으면서 그 기능을 사용하는 코드는 수정하지 않는다."를 뜻한다. 개방 폐쇄 원칙을 지키는 방법 1. 개방 폐쇄 원칙을 구현하는 첫 번째 방법은 추상화를 이용하는 것이다. 메모리에서 byte를 읽어 오는 기능을 추가해야 할 경우, ByteSource 인터페이스를 상속받은 MemoryByteSource 클래스를 구현함으로써 기능 추가가 가능하다. 그리고 새로운 기능이 추가되었지만, 이 새로운 기능을 사용할 FlowController 클래스의 코드는 변경되지 않는다. 즉, 기능을 확장 하면서도 기능을 사용하는 기존 코드는 변경되지 않는 것이다. .. 2022. 1. 19.
Node.js [ Koa ] 에대해서 || 사용법 Koa Koa는 2016년 Express 팀이 만든 웹 프레임워크입니다. Express 보다 기본으로 설계된 뼈대가 적지만 탄탄합니다. Koa는 뼈대로 설치되는 모듈이 적고, customizing이 자유롭습니다. Express보다 모듈화되어있어 원하는 대로 미들웨어 붙이기가 좋습니다. Koa는 태생이 es6 기반이며 core 에서부터 async/await를 지원하여 try-catch 에러 처리가 필요없습니다. - feat https://velog.io/@noyo0123/express-vs-koa-qyk24lsozz Node.js 웹 애플리케이션 프레임워크? express vs koa 왜 koa를 쓸까요? 멘토분께서 koa로 개발을 하자고 해서 서버를 koa로 구현한 적이 있어요. 그런데 왜 koa를 쓸까.. 2022. 1. 14.
function || AllowFunction 차이 둘의 차이를 알기에 앞서 우선 바인딩을 알아보자. Binding 메서드와 객체를 묶어놓는 것을 바인딩 함수를 호출하는 부분에서 실제 함수가 위치한 메모리를 연결하는 것도 바인딩이다. 바인딩은 정적 바인딩(static binding)과 동적 바인딩(dynamic binding)으로 구분할 수 있다. 정적 - 실행 시간 전에 일어남. 실행 시간에는 변하지 않는 상태로 유지. 동적 - 실행 시간에 이루어지거나 실행 시간에 변경됨. Function || AllowFuction 1.this Function 일반 함수는 함수를 선언할 때 this에 바인딩할 객체가 정적으로 결정되는 것이 아니고, 함수를 호출할 때 함수가 어떻게 호출되었는지에 따라 this에 바인딩할 객체가 동적으로 결정된다. AllowFuntion.. 2022. 1. 12.