일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 1916
- Alexnet
- 논문리뷰
- MachineLearning
- 백준
- 클린코드
- 머신러닝
- cs231n
- 짝지어제거하기
- 백준 1339
- 디미터법칙
- 백준 1916 자바
- 논문
- 알렉스넷
- GPT
- 백준9095
- 자바
- deeplearning
- 백준 1339 자바
- NLP
- 다익스트라
- 1107번
- 딥러닝
- Java
- 3745
- 1261
- dijkstra
- 관심사분리
- 논문구현
- 알고리즘
- Today
- Total
목록Study (13)
산 넘어 산 개발일지
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bKlhC8/btqWUpvOj2Y/0wm2UyKfCmGkijX2NNKZd0/img.jpg)
우리는 평소 코딩을 할 때 라이브러리에서 가져온 코드를 가져와서 사용한다. 이처럼 라이브러리는 우리가 제어권을 가지고 호출해서 사용하는 대상이다. 제어역전은 우리의 제어권을 외부에 넘겨주고 외부에서 우리 코드르 호출하게 하는 방식이다. 대표적인 예가 바로 프레임워크다. 프레임워크는 이미 다른 개발자들에 의해 수많은 코드, 특히 추상 클래스와 인터페이스들로 구현되어 있고 이를 사용하는 방법도 정해져 있다. 이를 사용하는 개발자들은 그저 이 방법을 익히고 프레임워크에서 만들어져 있는 클래스를 상속하거나 인터페이스를 구현함으로써 프레임워크의 틀에 맞게 작동시킨다. 여기서 중요한 점은 우리가 프레임워크의 코드를 호출하는 것이 아니라 프레임워크가 우리의 코드를 호출해서 사용한다는 것이다. 즉 제어권이 우리가 아닌..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cfvLQL/btqWOfU2DzJ/46mA3Qytv782iMfg6BK8F0/img.jpg)
문제점 모든 코드에서 원하는 클래스에 대한 객체를 만들 수 있겠지만 이 경우 원하는 클래스가 어떻게 동작하는지, 생성하기 위해 무엇이 필요한지를 클라이언트 코드가 일일이 파악해야 한다. 이 경우 다른 클래스에 대한 정보를 구체적으로 알게 된다는 점에서 캡슐화 원칙이 지켜지지 않는다. 또한 클라이언트 코드가 클래스에 대한 정보를 가지고 있어야 한다는 부담도 생긴다. 팩토리 메서드 패턴(Factory Method Pattern) 클래스의 객체를 만드는 일 자체를 Factory에 위임한다. 이 때 클라이언트 코드에서 넘겨주는 조건에 따라 원하는 객체를 반환하는 것이다. 팩토리 메서드 패턴에서 조건으로 인한 분기점은 마지막 가장 작은 단위의 클래스를 만드는 시점이 된다. ex) 라면공장 고객(Client)이 라..