< 디자인 패턴 유형 >
1. 목적
① 생성: 객체 인스턴스 생성에 관여, 클래스 정의와 객체 생성 방식을 구조화, 캡슐화를 수행하는 패턴
② 구조: 더 큰 구조 형성 목적으로 클래스나 객체의 조합을 다루는 패턴
③ 행위: 클래스나 객체들이 상호작용하는 방법과 역할 분담을 다루는 패턴
1.1 생성
①빌더(Builder): 복잡한 인스턴스를 조립하여 만드는 도구
②프로토타입(Prototype): 처음부터 일반적인 원형을 만들어 놓고 그것을 복사한 후 필요한 부분만 수정하여 사용하는 패턴
③팩토리 메소드(Factory Method): 상위 클래스에서 객체를 생성하는 인터페이스를 정의하고 하위 클래스에서 인스턴스를 생성하도록 하는 방식
④ 앱스트랙 팩토리(Abstract Factory): 서로 연관되거나 의존적인 객체들의 조합을 만드는 인터페이스를 제공하는 패턴
⑤ 싱글톤(Singleton): 전역 변수를 사용하지 않고 객체를 하나만 생성하도록 하며 생성된 객체를 어디에서든지 참조할 수 있도록 하는 패턴
1.2 구조
① 브리지(Bridge): 기능의 클래스 계층과 구현의 클래스 계층을 연결
② 데코레이터(Decorator): 기존에 구현되어 있는 클래스에 필요한 기능을 추가해 나가는 설계 패턴
③ 퍼사이드(Facade): 복잡한 시스템에 대하여 단순한 인터페이스를 제공
④ 플라이웨이트(Flyweight): 클래스의 경량화를 목적으로 하는 디자인 패턴
⑤ 프록시(Proxy): 실체 객체에 대한 대리 객체
⑥ 컴포지트(Composite): 객체들의 관계를 트리 구조로 구성하여 부분-전체 계층을 표현
⑦ 어댑터(Adabter): 기존에 생성된 클래스를 재사용할 수 있도록 중간에서 맞춰주는 역할
1.3 행위
① 미디에이터(Mediator): 객체지향 설계에서 객체의 수가 너무 많아지면 서로 간 통신을 위해 중간에 중재자를 두고 중재자에게 모든 것을 요구해 객체지향의 목표를 달성하게 해주는 패턴
② 인터프리터(Interpreter): 언어의 다양한 해석, 구체적으로 구문을 나누고 분리된 구문의 해석을 맡는 클래스를 작성하여 다양한 언어 구문 해석
③ 이터레이터(Iterator): 컬렉션 구현 방법을 노출시키지 않고 집합체 안 모든 항목에 접근 방법 제공
④ 템플릿 메소드(Template Method): 어떤 작업을 처리하는 일부분을 서브클래스로 캡슐화해 특정 단계에서 수행하는 내역을 바꾸는 패턴
⑤ 옵져버(Observer): 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에 연락이 가고 자동으로 내용 갱신
⑥ 스테이트(State): 객체 상태를 캡슐화하여 클래스화함으로써 주어진 여러 기능을 실행할 수 있는 재사용성이 높은 클래스를 설계하는 패턴
⑦ 비지터(Visitor): 각 클래스 데이터 구조로부터 처리 기능을 분리하여 별도의 클래스를 만들어놓고 해당 클래스의 메소드가 각 클래스를 돌아다니면서 특정 작업 수행
⑧ 커맨드(Command): 실행될 기능을 캡슐화하여 주어진 여러 기능을 실행할 수 있는 재사용성이 높은 클래스를 설계하는 패턴
⑨ 스트레티지(Strategy): 알고리즘 군을 정의하고 같은 알고리즘을 각각 하나의 클래스로 캡슐화
⑩ 메멘토(Memento): 클래스 설계 관점에서 객체의 정보를 저장할 필요가 있을 때 적용
⑪ 체인 오브 리스판서빌리티(Chain of Responsibility): 어떤 기능에 대한 처리의 연결이 하드코딩이 되어 있을 때 기능 처리의 연결 변경이 불가능한데 동적이로 연결되어 있는 경우에 따라 다르게 처리될 수 있도록 연결한 디자인 패턴
< 운영체제 종류 및 특징 >
1. PC
2. 모바일
< 라우터(Router) >
- 3계층 데이터 패킷을 발신지에서 목적지까지 전달하기 위해 최적의 경로를 지정하고 이 경로를 따라 데이터 패킷을 다음 장치로 전달하는 네트워크 장비이다