//Skip to content
- 김성박 강사
- NHN 엔터테인먼트 Dooray 개발실 수석
- (주)써니베일 대표이사
- T3Q(주) 기술이사
- 삼성 SDS 멀티 캠퍼스 전임강사
- 개발자 공부
- 자바 기본기 공부
- 면접은 멘탈을 망가트리는 단계
- 개념 암기가 아니라 실습이다.
- 잘만들고 싶다라는 생각을 가져야 한다.
- 강의
- 추상화
- 재사용
- 비즈니스 모델(업무)이 들어가면 재사용이 어렵다.
- 특정 관점으로 추상화된 객체는 다른 관점에서는 사용되기 어렵다.
- 상속관계
- 비지니스 모델에 따라 상속관계가 달라진다. ex) 자동차 구조도
- 부모타입으로 생성된 자식 객체는 부모타입에 있는 메소드만 사용가능하다.
- UML에서 실선으로 표시
- 인터페이스
- 메소드가 오버라이딩 되면 무조건 자식것이 실행된다.
- 먼저 기능을 정의한다.
- UML에서 점선으로 표시
- UML
- 의존관계는 점섬표시
- 화살표 표시는 가진다라는 뜻
- null
- 일반화
- 추상 클래스 : 일반화 시키면서도 존재하지 않는 단어들이 존재하고있다.
- 객체
- 인터페이스를 객체로 선언하는것이 좋다.ex) List list = new ArrayList();
- 정적
- 레퍼런스 타입만 봐서는 어떤 인스턴스가 사용될지 알기가 어렵다.
- 직렬화
- 기본형타입은 java.io.serializable 를 구현했으면 직렬화를 사용하여 byte단위로 전송가능하다.
- 개발 라이프 싸이클
- as-is : 요구사항 정의 -> 분석 -> 설계 -> 구현 (CBC)
- 제조업 베이스 방법으로 과거에 진행되었지만 망했다.
- 고객에게 빠르게 화면을 보여주고 개발작업과 수정작업을 진행
- 수정시 TEST 진행
- 지속적인 빌드, 통합 테스트(CTIP)
- 레퍼런스 모델 -> 레퍼런스 아키텍처 -> (비지니스모델) -> 아키텍처 정의 -> 설계(요구사항정의)
- 정답은 없지만 개발자는 항상 고민해야한다.
- 요구사항정의 -> 설계 -> 구현 구간을 반복
- 디자인패턴 공부는 초보자는 개념적인 부분을 공부하고 경력자는 객체지향 공부를 위해
- Antlr
- Design pattern
- 커뮤니케이션 용도로 필요 / 상호간에 내용에 대해 모두 알아야한다.
- Single pattern
- Application에서 어떤 객체가 단 하나만 생성되어서 동시에 사용되어야 할때 적용되는 Pattern
- 메소드만 있을때는 동시에 사용해도 상관없다.(지역변수는 새로 생성되기떄문)
- static과 New를 사용하지 않고 메소드를 통해 호출하기 위해 사용
- Builder Pattern
- 객체생성 작업을 대신해줄 하나의 클래스를 추가하는 Pattern
- 여러개의 메소드중에 특정 몇개만 사용
- 하나의 메소드는 결과를 반환한다.
- 추상클래스에 메소드가 추가되면 상속된 클래스는 메소드를 추가해야한다.
- 부분을 만드는 메소드를 추상메소드로 만들고 그 부분을 만드는 부분은 자식에게 맡긴다. 완성품은 부모에서 만든다.
- Effective Java 에서 Builder 패턴
- 생성자 파라미터에 값을 넣는경우에는 API문서를 봐야 확인이 가능하여 자신의 메소드를 호출해서 값을 넣고 완성 메소드를 호출한다.
- Prototype Pattern
- 새로운 객체를 생성 할 때 new 연산자를 사요하지 않고기존의 객체를 복사하여 이용하는 Pattern
- Adapter Pattern
- 이미 존재하는 클래스의 인터페이스가 우리가 사용하고자 하는 인터페이스와 맞지 않을 때 이를 변환시켜 사용 하는 Pattern
- Facade Pattern
- 객체를 감싸서 인터페이스를 단순화시킬 수 있는 Pattern
- Bridge Pattern
- 복합 객체의 생성 과정과 표현 방법을 분리함으로써 동일한 생성 공정이 서로 다른 표현하는 Pattern
- Composite Pattern
- 재귀적인 구조를 만드는 Pattern
- 폴더가 파일 또는 폴더를 가질수 있다.
- Decorator Pattern
- 장식할 대상과 장식을 동일시화 하는 Pattern
- 생성자 매개변수를 확인하자
- 주인공과 장식을 구분할 수 있어야 한다.
- System.in, System.out 은 주인공이다. : 기능이 적다
- 주인공 : 결정하는 곳
- 장식 : 다양한 방법을 구현하는 곳
- FileReader등등
- FlyWeight Pattern
- 인스턴스를 가능한 한 공유시켜 쓸데없이 new 연산자를 사용하지 않도록 함으로써 객체를 '가볍게' 만들기 위한 Pattern
- Proxy Pattern
- 본인 대신해 일을 처리해야 할 대리인을 두는 Pattern
- Iterator Pattern
- for 이나 while문을 빠져나갈지 조건을 정해주게 되는데 이러한 탈출조건을 가지고 있는 변수를 추상화해서 일반화 한 Pattern
- Template Method Pattern
- 템플릿의 기능을 가진 Pattern
- 자식에게 구현되는 부분을 맡기고 접근제한자를 통해 제한을 둔다.
- Visitor Pattern
- Visitor은 '방문자'라는 의미를 가진다. 데이터 구조와 처리를 분리한다. 그리고 구조 안을 돌아다니는 주체인 '방문자'를 나타내는 클래스를 준비해서 그 클래스에게 처리를 맡긴다.
- State Pattern
- 일반적으로 생각하는 사물이 아닌 '상태'를 클래스로 표현하는 Pattern
- Strategy Pattern 구조도가 똑같다.
- Reuntime시 상태에 대한 변경작업이 가능하다.
- 상태에대한 추가작업시 관련된 소스 수정 작업이 필요하다.
- Strategy Pattern
- 알고리즘을 구현한 부분이 모두 교환 가능하도록 만드는 Pattern
- 전략에 대한 값을 실시간으로 변경
- Observer Pattern
- 관찰 대상의 상태가 변하면 관찰자에게 통지된다.
- 관리보다는 통지하는 의미로 이해
- Chain of Responsibillity Pattern
- 요구하는 측과 처리하는 측의 연결을 느슨하게 하여 책임을 떠넘기는 Pattern
- 상황에 따라 요구를 처리할 객체가 변하는 프로그램에도 대응
- Memento Pattern
- 인스턴스 상태를 나타내는 역할을 도입해서 캡슐화의 파괴가 일어나지 않으면서 보존과 복원을 실행하는 Pattern
- 비트코인과 블록체인에 대해 자세히 설명되어 있는 책이라고 생각한다.
- 허황된말들이 없고 비트코인에 대한 역사와 저자의 미래에 대한 생각이 들어가 있어서 개인적으로 맘에들었던 책이다!