728x90
반응형

컴퓨터과학 63

[소프트웨어 아키텍처] 7. 반복자 패턴과 컴포지트 패턴(Iterator Pattern, Composite Pattern -java)

반복자 패턴과 컴포지트 패턴(Iterator Pattern, Composite Pattern) 반복자 패턴 컬렉션을 캡슐화!!!!!!!! 컬렉션의 구현 방법을 노출하지 않으면서 집합체 내의 모든 항목에 접근하는 방법을 제공합니다. 자료구조와 접근 방법을 분리시켜 객체화 하는 방법 서로 다른 구조를 가지고 있는 저장 객체에 대해서 접근하기 위해서 interface를 통일시키고 싶을 때 사용하는 패턴입니다. 만약 MenuItem에 대하여 DinerMenu 클래스는 배열을, PancakeHouseMenu 클래스는 List를 사용한다고 하자. DinerMenu 배열 사용 public class DinerMenu { private static final int MAX_ITEMS = 6; private int nu..

[소프트웨어 아키텍처] 5. 템플릿 메소드 패턴(Template method Pattern -java)

템플릿 메소드 패턴 커멘드 패턴에서 우리는 메서드의 호출을 캡슐화 했습니다. 이번에는 서브클래스에서 언제든 필요할 때마다 알고리즘을 가져다가 사용 할 수 있도록 캡슐화 해보겠습니다. 그리고 할리우드에서 영감을 받아 만들어진 디자인 원칙도 같이 배워보도록 합시다.! 템플릿 메소드 패턴은 알고리즘의 골격을 정의 합니다. 템플릿 메소드를 사용하면 알고리즘의 일부 단계를 서브클래스에서 구현할 수 있으며, 알고리즘의 구조는 그대로 유지하면서 알고리즘의 특정 단계를 서브클래스에서 재정의할 수도 있습니다. 간단하게 말하면, 알고리즘의 템플릿(틀)을 만듭니다. 템플릿이란 그냥 메서드 입니다.(템플릿 안에는 또 다른 메서드가 존재합니다.) 좀더 구체적으로 이야기 하면 알고리즘의 정의한 메서드 입니다. 즉, 템플릿 메서드..

[소프트웨어 아키텍처] 2. 전략 패턴(Strategy Pattern -java)

전략패턴 알고리즘군을 정의하고 캡슐화해서 각각의 알고리즘군을 수정해서 사용 할 수 있게하는 패턴 입니다. 클라이언트로부터 알고리즘을 분리해서 독립적으로 변경할 수 있다. 하나의 움짤에 여러가지 전략을 설정할 수 있습니다. 변하지 않는 것은 움짤, 변하는 것은 전략 입니다. 상속이 모든 문제를 해결할 수는 없습니다.(템플릿 메소드 패턴에서는 상속을 사용합니다.) 2022.10.25 - [컴퓨터 공학/0 + 소프트웨어 아키텍처] - [소프트웨어 아키텍처] 5. 템플릿 메소드 패턴(Template method Pattern -java) [소프트웨어 아키텍처] 5. 템플릿 메소드 패턴(Template method Pattern -java) 템플릿 메소드 패턴 커멘드 패턴에서 우리는 메서드의 호출을 캡슐화 했습니..

[소프트웨어 아키텍처] 6. 상태 패턴(State Pattern -java)

상태 패턴 전략 패턴과 상태 패턴을 쌍둥이다?! 전략패턴(Strategy Pattern)을 사용하면 행위(알고리즘)을 캡슐화해서 객체가 행위 자체 변경할 수 있습니다. 상태패턴(State Pattern)을 사용하면 객체의 내부 상태를 캡슐화해서 상태 변경에 따라서 객체의 행동을 바꿀 수 있습니다. 쉽게 이야기 하면, 상태 패턴은 내부 상태를 바꿈으로써 객체가 행동을 바꿀 수 있도록 한다. 다시 말하면 상태에 따라서 행동을 달리해야하는 경우에 사용하는 패턴이다. 상태를 별도의 클래스로 캡슐화한 다음 현재 상태를 나타내는 객체에게 행동을 위임하므로 내부 상태가 바뀔 때 행동이 달라지게 된다. 4강 상태를 제외하고 모든 상태가 같다..! 상태 패턴 구조 Context 해당 클래스에는 여러가지 내부 상태가 들..

[소프트웨어 아키텍처] 3. 커맨드 패턴(Command Pattern-java)

커맨드 패턴 커맨드 패턴을 사용하면 요청 내역을 객체로 캡슐화해서 객체를 서로 다른 요청 내역에 따라 매개변수화할 수 있다. 이러면 요청을 큐에 저장하거나 로그로 기록하거나 작업 취소 기능을 사용할 수 있다. 리시버의 메서드 호출을 캡슐화 한다. 메서드 호출을 캡슐화하면 계산 과정의 부분을 결정화할 수 있기에 계산하는 코드를 호출한 객체는 그 일이 어떤 방법으로 처리되는지 신경 쓸 필요가 없다. 쉽게 이야기하면 다음과 같습니다. Command 를 통해서 리시버의 특정 메서드를 캡슐화 하고, 인보커(호출자)는 리시버에 관계 없이(Command에서 캡슐화했기 때문) Command 객체의 메서드를 호출하면 됩니다. 즉, 커맨드 패턴은 호출을 캡슐화 합니다. 위 내용을 레스토랑의 종업원, 주방장의 예시로 코드를..

[소프트웨어 아키텍처] 4. 옵저버 패턴(Observer Pattern -java)

옵저버 패턴 옵저버 패턴이란 한 객체의 상태가 변화하면 그 객체에 의존하는 다른 객체에게 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다(one-to-many) 의존성을 정의합니다. 예를들어 정보통신대대라는 객체의 상태가 변화하면 그객체에 의존하는 병사 및 간부들에게 연락이 가고 자동으로 전달사항이 갱신되는 방식이다. 옵저버 패턴은 일련의 객체 사이에서 일대다 관계를 정의 또한, 신문 구독 매커니즘을 이해하고 있으면 옵저버 패턴을 쉽게 이해할 수 있다. 신문사를 주제(subject) 구독자를 옵저버(observer)라고 부른다고 알고 있으면 됩니다.! 주제(subject)가 상태를 저장하고 제어한다…! e.g) 행보관(subject)은 매일 아침7시에 병사들(obsever)에게 아침점호 방식을 알려..

[소프트웨어 아키텍처] 1-3) 아키텍처 패턴 스타일

2022.09.20 - [분류 전체보기] - [소프트웨어 아키텍처] 1-2) 소프트웨어 아키텍처 문서화와 평가 [소프트웨어 아키텍처] 1-2) 소프트웨어 아키텍처 문서화와 평가 2022.09.20 - [컴퓨터 공학/0 + 소프트웨어 아키텍처] - [소프트웨어 아키텍처] 1-1) 소프트웨어 아키텍처 기초지식 [소프트웨어 아키텍처] 1-1) 소프트웨어 아키텍처 기초지식 ✅ 아키텍처 기초 소프트 howisitgo1ng.tistory.com 아키텍처 패턴 스타일 왜 등장했는가??? 개발은 보통 완료된 후에도 오랜 시간 지속적으로 업그레이드되면서 향상된 서비스와 새로운 서비스를 제공해야 하는데,설계 없이 이런 유지보수, 진화의 작업을 하는 것은 장기적으로 큰 비용의 낭비를 가져오게 됩니다. 그래서 크고 복잡한 소..

[소프트웨어 아키텍처] 1-2) 소프트웨어 아키텍처 문서화와 평가

2022.09.20 - [컴퓨터 공학/0 + 소프트웨어 아키텍처] - [소프트웨어 아키텍처] 1-1) 소프트웨어 아키텍처 기초지식 [소프트웨어 아키텍처] 1-1) 소프트웨어 아키텍처 기초지식 ✅ 아키텍처 기초 소프트웨어 아키텍처를 공부하기 위해서 기초지식에 대해서 알아보자..! 💭 소프트웨어 아키텍처란? 소프트웨어 구조 또는 소프트웨어 아키텍처(software architecture)는 소프트웨 howisitgo1ng.tistory.com 지난 시간에 소프트웨어 아키텍처 기초 지식에 대해서 알아보았다. 이번에는 📚 문서화 하는 과정을 알아보자! 📚 아키텍처 문서화 🛠 아키텍처 문서는 더 좋은 설계를 만들기 위한 도구 문서화를 함으로써 얻는 이점은 다음과 같다. 구현을 시작하기 전에 중요한 설계 이슈를 발..

[소프트웨어 아키텍처] 1-1) 소프트웨어 아키텍처 기초지식

✅ 아키텍처 기초 소프트웨어 아키텍처를 공부하기 위해서 기초지식에 대해서 알아보자..! 💭 소프트웨어 아키텍처란? 소프트웨어 구조 또는 소프트웨어 아키텍처(software architecture)는 소프트웨어의 구성요소들 사이에서 유기적 관계를 표현하고 소프트웨어의 설계와 업그레이드를 통제하는 지침과 원칙이다. 소프트웨어 구조 - 위키백과, 우리 모두의 백과사전 소프트웨어의 설계는 서브시스템 수준의 덩어리화(chunking) 작업이라고 말할 수 있다. 👨‍🔧 아키텍처의 역할 시스템 구조를 확립하면서 소프트풰어 개발의 중심축 설계, 구현, 통합, 테스팅까지 통합하는 뼈대 초기 의사 결정의 핵심 컴포넌트 명백한 역할을 가지고 있고, 독립적으로 존재할 수 있는 시스템의 부분 모듈 프로그래밍 언어의 문법 구조에..

[운영체제] 10. 가상 메모리

2022.06.13 - [컴퓨터 공학/0 +운영체제] - [운영체제] 9. 메모리 관리 [운영체제] 9. 메모리 관리 2022.06.11 - [컴퓨터 공학/0 +운영체제] - [운영체제] 8. Scheduling 기법(2) -유닉스/리눅스 스케줄링 [운영체제] 8. Scheduling 기법(2) -유닉스/리눅스 스케줄링 2022.05.15 - [컴퓨터 공학/0 +운영체제] - [.. howisitgo1ng.tistory.com 지난 포스팅에서는 메모리관리에 대해서 소개 했다. 프로그램이 CPU에서 실행되려면 실행에 당장 필요한 부분이 메모리에 올라와 있어야 한다.! 여러 프로그램이 동시에 수행되는 시분할 환경에서는 한정된 메모리 공간을 여러 프로그램이 조금씩 나누어 사용하는데.. 이는 운영체제가 어떤 프..

728x90
반응형