공부 기록

[정보처리기사] 1. 소프트웨어 설계 정리 - 3

by 너나나

외우기싫다

28. 디자인 패턴

생성 패턴(Creational Pattern)

생성 패턴은 객체의 생성과 관련된 패턴으로 총 5개의 패턴이 있음

객체의 생성과 참조 과정을 캡슐화 하여 객체가 생성되거나 변경되어도 프로그램의 구조에 영향을 크게 받지 않도록 하여 프로그램에 유연성을 더해줌

추상 팩토리
(Abstract Factory)
구체적인 클래스에 의존하지 않고, 인터페이스를 통해 서로 연관·의존하는 객체들의 그룹으로 생성하여 추상적으로 표현
연관된 서브 클래스를 묶어 한 번에 교체하는 것이 가능
빌더
(Builder)
작게 분리된 인스턴스를 건축 하듯이 조합하여 객체를 생성
객체의 생성 과정과 표현 방법을 분리하고 있어 동일한 객체 생성에서도 서로 다른 결과를 만들어 낼 수 있음
팩토리 메소드
(Factory Method)
객체 생성을 서브 클래스에서 처리하도록 분리하여 캡슐화한 패턴
상위 클래스에서 인터페이스만 정의하고 실제 생성은 서브 클래스가 담당
가상 생성자(Virtual Constructor) 패턴 이라고도 함
프로토타입
(Prototype)
원본 객체를 복제하는 방법으로 객체를 생성하는 패턴
일반적인 방법으로 객체를 생성하며, 비용이 큰 경우 주로 이용
싱글톤
(Singleton)
하나의 객체를 생성하면 생성된 객체를 어디서든 참조할 수 있지만, 여러 프로세스가 동시에 참조할 수는 없음
클래스 내에서 인스턴스가 하나뿐임을 보장, 불필요한 메모리 낭비 최소화

구조 패턴(Structural Pattern)

구조 패턴은 클래스나 객체를 조합하여 더 큰 구조로 만들 수 있게 해주는 패턴으로 총 7개의 패턴이 있음

-> 구조가 복잡한 시스템을 개발하기 쉽게 도와줌

어댑터
(Adapter)
호환성이 없는 클래스들의 인터페이스를 다른 클래스가 이용할 수 있도록 변환해주는 패턴
기존의 클래스를 이용하고 싶지만 인터페이스가 일치하지 않을 때 이용
브리지
(Bridge)
구현부에서 추상층을 분리하여, 서로가 독립적으로 확장할 수 있도록 구성한 패턴
기능과 구현을 두 개의 별도 클래스로 구현
컴포지트
(Composite)
여러 객체를 가진 복합 객체와 단일 객체를 구분 없이 다루고자 할 때 사용하는 패턴
객체들을 트리 구조로 구성하여 복합 객체 안에 복합 객체가 포함되는 구조를 구현 가능
데코레이터
(Decorator)
객체 간의 결합을 통해 능동적으로 기능들을 확장할 수 있는 패턴
임의의 객체에 부가적인 기능을 추가하기 위해 다른 객체들을 덧붙이는 방식으로 구현
퍼싸드
(Facade)
복잡한 서브 클래스들을 피해 더 상위에 인터페이스를 구성함으로써 서브 클래스들의 기능을 간편하게 사용할 수 있도록 하는 패턴
서브 클랫들 사이의 통합 인터페이스를 제공하는 Wrapper 객체가 필요함
플라이웨이트
(Flyweight)
인스턴스가 필요할 때마다 매번 생성하는 것이 아니고 가능한 한 공유해서 사용함으로써 메모리를 절약하는 패턴
다수의 유사 객체를 생성하거나 조작할 때 유용하게 사용할 수 있다.
프록시
(Proxy)
접근이 어려운 객체와 여기에 연결하려는 객체 사이에서 인터페이스 역할을 수행하는 패턴
네트워크 연결, 메모리 대용량 객체로의 접근 등에 주로 이용

행위 패턴(Behavioral Pattern)

행위 패턴은 클래스나 객체들이 서로 상호작용하는 방법이나 책임 분배 방법을 정의하는 패턴으로 총 11개의 패턴이 있음

 

생성 패턴, 구조 패턴 아니면 다 행위 패턴!!

생성 패턴 : 추상 팩토리, 빌더, 팩토리 메소드, 프로토타입, 싱글톤

구조 패턴 : 어댑터, 브리지, 컴포지트, 데코레이터, 퍼싸드, 플라이웨이트, 프록시

말고 다 행위 패턴!!!!!!!

 

35. 미들웨어 솔루션 명세

미들웨어(Middleware)의 개념 및 종류

미들웨어 : 운영체제와 응용 프로그램, 또는 서버와 클라이언트 사이에서 다양한 서비스를 제공하는 소프트웨어

  • 표준화된 인터페이스를 제공함으로써 시스템 간의 데이터 교환에 일관성 보장
  • 통신 제공 방법이나 기능에 따라 DB, RPC, MOM, TP-Monitor, ORB, WAS 등으로 구분

DB

DB : 데이터베이스 벤더에서 제공하는 클라이언트에서 원격의 데이터베이스와 연결하기 위한 미들웨어

  • DB를 사용하여 시스템을 구축하는 경우 보통 2-Tier 아키텍처라고 함
  • 대표적인 DB는 마이크로소프트의 ODBC, 볼랜드의 IDAPI, 오라클의 Glue 등이 있음 

RPC(Remote Procedure Call)

RPC(원격 프로시저 호출) : 응용 프로그램의 프로시저를 사용하여 원격 프로시저를 로컬 프로시저처럼 호출하는 방식의 미들웨어

  • 대표적인 RPC는 이큐브시스템의 Entera, OSF의 ONC/RPC 등이 있음

MOM(Message Orientaed Middleware)

MOM(메세지 지향 미들웨어) : 메세지 기반의 비동기형 메세지를 전달하는 방식의 미들웨어

  • 온라인 업무보다는 이기종 분산 데이터 시스템의 데이터 동기를 위해 많이 사용
  • 대표적인 MOM은 IBM의 MQ, 오라클의 Message Q, JCP의 JMS 등이 있음

TP-Monitor(Transaction Processing Monitor)

TP-Monitor(트랜잭션 처리 모니터) : 항공기나 철도 예약 업무 등과 같이 온라인 트랜잭션 업무에서 트랜잭션을 처리 및 감시하는 미들웨어

  • 사용자 수가 증가해도 빠른 응답 속도를 유지해야 하는 업무에 주로 사용됨
  • 대표적인 TP-Monitor은 오라클의 tuxedo, 티맥스소프트의 tmax 등이 있음

ORB(Object Request Broker)

ORB(객체 요청 브로커) : 객체 지향 미들웨어로 코바(CORBA) 표준 스펙을 구현한 미들웨어

  • 최근에 TP-Monitor의 장점인 트랜잭션 처리와 모니터링 등을 추가로 구현한 제품도 있음
  • 대표적인 ORB는 Micro Focus의 Orbix, OMG의 CORBA 등이 있음

WAS(Web Application Server)

WAS(웹 애플리케이션 서버) : 정적인 콘텐츠를 처리하는 웹 서버와 달리 사용자의 요구에 따라 변하는 동적인 콘텐츠를 처리하기 위해 사용되는 미들웨어

  • 클라이언트/서버 환경보다는 웹 한경을 구현하기 위한 미들웨어
  • HTTP 세션 처리를 위한 웹 서버 기능뿐만 아니라 미션-크리티컬한 기업 업무까지 JAVA, EJB 컴포넌트 기반으로 구현이 가능
  • 대표적인 WAS은 오라클의 WebLogic, IBM의 WebSphere 등이 있음

블로그의 정보

공부 기록

너나나

활동하기