Composite, command, observer 패턴 활용
스피커 sound card, 프린터 write only
마이크 read only
1. Composite 패턴
활용 예)
메뉴를 포함하고 있는 메뉴 , 부서 구성원(직원, 임직원 포함하고 있는,,), 디렉터리 구조(파일을 포함하는)
패턴 구현
1. 메뉴 만들기
#. 접근 범위 제어
- private은 같은 클래스 멤버만 사용 가능
- default (package private) 같은 패키지 멤버만 접근 가능
- protected : (default) + 서브클래스 멤버 // 같은 패키지 접근 가능, 다른패키지는 안 됨.
(D extends A이면 ,,, D클래스는 A클래스의 서브, 그 중 상속받은 멤버만 A에 접근 가능)
- public 완전 공개
인스턴스 메서드를 호출하려면 인스턴스를 만들어야 호출가능하다.
클래스에서 생성자를 안 만들면 컴파일러가 자동으로 생성자를 만들고 수퍼클래스의 필드를 제일 먼저 호출해옴. 그 다음 본 클래스의 필드를 생성함. 각 필드 초기화는 각 클래스에서 담당
package bitcamp.util;
public class MenuGroup extends Menu {
ArrayList menus ; //ArrayList menus = new ArrayList(); 초기화 수행문은 밑으로 내려감
public MenuGroup(String title) {
super(title);// 자바세계에서는 맨 먼저 수퍼 클래스의 생성자를 호출하는 코드를 넣어야하는데 안 넣으면 컴파일러가 자동으로 넣음
//근데 만약 수퍼클래스 안에 생성자가 없으면 super(파라미터)로 명시적으로 써서 호출해야함.
menus =new ArrayList();
}
}
*상속과 생성자
association연관(단순 사용), inherrigance상속, aggregation 집합(포함), compostion(음,, 거의 일체형같은,,자동차->엔진)
점선: dependency 필요할 때만
uml에서만 그런거고
평상시엔 전체 다 dependency(의존)임
2. Observer 패턴
=> 객체의 상태가 변경됐을 때 보고 받아서 처리하는 경우 (보고 받는 사람: event listener = observer)
Observer 패턴의 동작 원리 (listener)
listener...
3.Command 패턴
한 명령어 한 클래스에
이점: 명령 추가 -> 클래스 추가 : 기존 코드를 수정할 필요없다.
생성자가 호출될때 다른 생성자 호출할때 this 씀
super와 this는 함께 있을 수 없음
상속의 종류 2개
특수화 : 스페셜: 위에서 아래로 확장하는거 // 특별한 카 (보편적인 상속)/ 클래스의 기능을 덧붙여 좀 더 특별한 일을 하는 서브클래스를 정의
제너럴: 두 클래스에서 일반적인 기능(공통기능)을 추출해서 수퍼클래스로 정의하는것
제너럴: 이 클래스는 직접 사용하려고 만든 클래스가 아니다. 서브 클레스에 공통기능을 물려주려고 만든 클래스다.
그래서 직접 사용하지 못하도록 막는다 = > " 추상클래스"
추상클래스
클래스 앞에 public abstarct class 붙이면 사용하지 말라는 뜻
미완성이니 상속받아서만 쓰던지 상속받아져있는 클래스 쓰세요 .
보통 자바 외 클래스 이름은 abstract어쩌구~로 한다.
추상클래스는 추상 메서드를 가질수있다? 먼말 ,,
추상클래스는 미완성된 클래스이기 때문에 일부 메서드가 구현되지 않은채로 있어도 됨.
어차피 추상클ㄹ래스는 인스턴스를 못 만들기때문에 .
상속받은 서브클래스는 완성을 해야함.
'[네이버클라우드] 클라우드 기반의 개발자 과정 7기 > 웹프로그래밍' 카테고리의 다른 글
[NC7기-42일차(6월23일)] - 웹프로그래밍 23일차 (0) | 2023.06.23 |
---|---|
[NC7기-41일차(6월22일)] - 웹프로그래밍 22일차 (0) | 2023.06.22 |
[NC7기-39일차(6월20일)] - 웹프로그래밍 20일차 (0) | 2023.06.20 |
[NC7기-38일차(6월19일)] - 웹프로그래밍 19일차 (0) | 2023.06.19 |
[NC7기-37일차(6월16일)] - 웹프로그래밍 18일차 (0) | 2023.06.16 |