저번시간 복습
json형식의 특징은 object모양인것도 특징이지만
속성 : 밸류 로 구분되어있는것도 특징
value로 올수있는건 기본타입, 배열, 제이슨오브젝트, 널, 불린,number 6개
속성이름은 반든시 "String"
- 디자인 패턴에 대해서는 여기자세히 나와있다고 한다.
www.tutorialspoint.com/design_pattern/index.htm
Design Patterns in Java Tutorial - Tutorialspoint
Design Patterns in Java Tutorial Design patterns represent the best practices used by experienced object-oriented software developers. Design patterns are solutions to general problems that software developers faced during software development. These solut
www.tutorialspoint.com
- ppt자료
디자인 패턴이란?
개발하다보면 자주마주치는 문제점에 대해서
미리 개발자들이 겪었던 내용들의 솔루션 모음집
3가지 범주가있다 (생성 구조 행동 패턴)
생성: 객체생성용도.. 만드는 방법에 대한 모음집
1. 추상팩토리
2. 빌더
복합객체를 어떻게 만들지 표현에 관련된.. 어떻게 정리할지
결국 복합객체를 생성할거니까 생성패턴에있다.
3. 팩토리 : 요즘 많이 보이는 패턴
4. 팩토리메서드
5. 원형
6. 싱글톤 : 객체를 하나만 생성하고싶을떄
추상팩토리 : 팩토리는 팩토리인데 추상팩토리..
팩토리메서드는 객체한개를 리턴하는데 추상팩토리는 객체여러개를 만들어주는 팩토리임
추상메서드를 구체화함.한개의 객체가아니고 여러개의 객체를 만든다.
어떤팩토리를 선택하냐에따라 내가만들 제품군들이 바뀐다
제품군을 만든다는게 앱스트랙팩토리의 특징
빌더 : 복합객체의 생성과정과 표현방법을 분리하여
동일한 생성 절차에서 서로 다른 표현 결과를 만들 수 있게 하는 패턴
* 빌더 패턴 : 인자가 많은 생성자나 정적 팩토리가 필요한 클래스를 설계할 때
* 특히 대부분의 인자값이 선택적인 상황에 유용함
* - 점층적 생성자 패턴보다 가독성이 좋아진다. (점층적 : 생성자를 여러개만드는것)
* - 생성된 객체는 자바빈을 사용할 때보다 훨씬 안전하다. (Immutable 객체)
* (자바빈은 게터세터가 있고 디폴트생성자가잇는 구조.. )(뭐가안전? 세터를 만들어놓으면 세터는
* 우리만 호출할수있다는 보장이없음. 게다가 세터를 이용하면 mutable 즉 값을 언제든지 바꿀수잇는객체)
* (빌드쓰면 immutable객체로 만들어지기떄문에 쉽게바꿀수없다.) (뭔소리냐면 멤버를 내가원하는 갑으로 세팅해서 만들었는디
* Member memeber = new Member.builer("sdfsdf"ssdf) <<이걸 아랫줄ㄹ에서 ㄷ바꿀수가없다.
*
구조패턴
어댑터 : 뭔가 변환한다.
인터페이스의 타입을 중간에서 변환해주는 역할을 하는게 어댑터
다른타입의 객체가있을때 중간에 어댑터를 끼워넣어서 어댑터를 통해 두개가 정상사용할수있는거임
저 둘은 인터페이스가 달라서중간에 어댑터가 필요하다
저 어댑터는 mediaPlayer를 임플리먼트받으면서 advance 멤버변수를 갖고있음
복합체
집합을 사용할때 사용하는 패턴. 트리구조 나오면 그냥 composite(복합체)패턴임
나 자신을 넣을수있는 또다른 타입을 가지고있는것
장식자 (Decorator)..많이나온다
객체가있는데, 그걸 감싸고(빨간색으로칠하기) 또 감사(파란색으로칠하기)
기본기능은 손대지않고 계속 덧붗이는거임
퍼사드 : 정면
보이는 면이있는반면에 우리가모르는 여러부분들이있음복잡한.. 하지만 우리가 보는건 깔끔한 면
내부적인 복잡한것들은 클라이언트가 전혀 관심이없음. 단지 내가 원하는 인터페이스만 호출해서 쓰면 됨
프록시 : 대리인
진짠 리얼어쩌군데 프록시역할을 하는 프록시이미지가 대신 알아서 해주는거임 (사용자가 호출했을때)
진짜든 프록시든 어짜피 같은거임플리먼트했음.
ex 페이징처리할때 10페이지읽었는데 1~10까지는 이미읽었기때문에 db에 또 select할필요없고 벗어나는거 눌렀을때 읽어야함. 그런작업을 중간에 프러시가 컨트롤을 한다.
프록시가 리얼이미지전에서 권한있/없을 걸러주면서 리얼이미지ㄹㄹ 보호해주는 역할(프로텍션 프록시)
프록시패턴하면 크게 3가지 용어가 나오느데 리모트 프록시(원격에있는데 로컬에있는것처럼), 버츄얼프록시(객체를 생성해서 쓴다고쓴건데 알고보니 프록시가 가상객체 생성해줬던거임), 프로텍션 프록시(보호기능. 권한체크등)
행동패턴
어떤 처리를 할대 그 기능을 어느객체가 처리를 하고 어떤 알고리즘을 구현하는지 를 정의하는걸 다루는 패턴
특정한 기능 구현할때 어떤 객체가 구현해야하는지..
명령 : 브로커가 오더를 열심히 리스트에 담을거임(take order) 그래서 나중에 포문으로 꺼내서 하나의 객체처럼 오더타입인 애들을 다 쓸수있음..
반복자 (Iterator)
집합이나 컬렉션이 있어야됨. 그 안의 데이터를 하나하나 접근해서 하나하나 꺼내오는 과정을 이터레이터로 설계를 함. 그안에 hasnext랑 next가 있고..
클라이언트는 이터레이터 가져다가 해즈넥스트랑 넥스트로 꺼내쓸수있음(컬렉션안의 구조가 tree든 set이든 클라이언트는 알필요가 없다)
전략(Strategy) << 알고리즘이 나옴 항상
인터페이스로 알고리즘을 해놓고, 전략의 구현으로 add, multi등...