본문 바로가기

프로그래밍/Design Patterns

[Design Pattern] 싱글톤 제일 처음으로 사용해 본 디자인 패턴이다. 예전에 지인이 해놓은 피티를 보니꽤 내용을 잘 정리해놔서 옮겨 본다.싱글톤이야 지겹게 써봤지만 화룡점정을 찍는 정리. 출처 : https://c.aitl.in/ 홈피 관리자 머리 속에서 정리된 것을 정리한 피피티 싱글톤 패턴전략클래스가 유일한 인스턴스를 갖고, 그 인스턴스는 전역에서 액세스 할 수 있도록 한다.전역변수다! 손해멀티 스레딩에 시간 지연이 생긴다.전역에서 액세스 하기때문에 문제가 발생하면 모든 코드를 둘러봐야 한다.기능 단위 테스트나 변경을 위해 관련 구조만 뽑아내기 어렵다. 개이득단 하나의 인스턴스만 갖도록 강제한다.특정 인스턴스에 어디든 접근하여 자원을 사용할 수 있다. 전역변수다!다른 클래스의 공통 기능부를 통합해 관리할 수 있다. Basic ..
[Design Pattern] 팩토리 패턴 new는 구상 클래스의 객체를 생성 즉 인스턴스를 의미한다.다형성을 이용해 코딩을 하면 다양한 조건문이 생성되고이는 프로그래머가 실수할 가능성이 매우 높아진다.(특히 새 구상 클래스가 설계되었을 시) 심플 팩토리(팩토리 메소드)예시) 피자가게에서 파는 피자간단하게 생각할 수 있는 것은 PizzaStore, Pizza 클래스가 필요할 것이다.Pizza는 CheesePizza 등의 부모 클래스가 되며 다형성을 이용해 이를 생성한다.피자 스토어는 Pizza 클래스를 이용해 인스턴스를 만들어 내면 된다. 123456789101112131415161718192021222324Class PizzaClass A_Pizza : Public PizzaClass B_Pizza : Public Pizza Class Pizz..
디자인 패턴 연관도 대충 요런 꼬라지라고한다!
중재자 패턴 정의다수의 객체를 다뤄야 하는 경우 주로 사용한다. 서로 관련된 객체를 복잡한 연관 관계를 한 곳으로 집중시키고자 하는 경우 이 객체들간의 “중재자”가 되어 그들이 서로를 알지 못하더라도 다른 객체에게 정보를 전달할 수 있다. 장점중재자 클래스를 사용함으로써 각 클래스를 정의할 때 다른 객체를 참조할 필요 없이 중재자만 참조.여러 객체들에게 분산될 행위를 한 곳으로 모아 객체간의 결합도를 낮춘다.M:N의 관계를 M:1의 관계로 바꿔주어 관리, 확장, 재사용성이 높아진다.객체들간의 상호 연관 관계를 중재자에서 구현함으로써 객체의 행위와 무관하게 객체간의 관계를 다룰 수 있다. 단점객체들 간의 모든 연관 관계를 집중하기 때문에 규모가 커지고 복잡해질 수 있다. 클래스 다이어그램 예제 코드12345678910..
싱글톤 사용하기 싱글톤 템플릿 버전12345678910111213141516171819202122232425262728293031#pragma once//
[Design Pattern] 옵저버 패턴 개요 요약새 소식을 알려줄 수 있는 패턴, JDK에서 가장 많이 쓰이는 패턴, 일대다 관계, 느슨한 결합에 대해 알 것. 비유출판사 + 구독자 = 옵저버 패턴출판사를 주제(subject), 구독자를 옵저버(object)라고 부른다는 것을 외워둔다. 주제의 데이터가 바뀌면 새로운 데이터 값이 옵저버 객체에게 전달된다.옵저버들이 주제의 데이터를 구독하려면 등록 과정을 거쳐야한다.등록을 하지 않았거나 구독을 중지하면 더 이상 주제로부터 정보를 받지 않는다. 정의한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에게 정보가 전달되고자동으로 내용이 갱신되는 일대다 의존성이 정의된 패턴을 말한다. 장점느슨한 결합도(Loose Coupling)- 주제가 옵저버에 대해서 아는 것은 옵저버가 특정 인터페이스를 구현한다는..
디자인 패턴, 싱글톤, 상태패턴 1. 디자인패턴 개요본문 위키 : http://ko.wikipedia.org/wiki/디자인_패턴 소프트웨어 개발 방법에서 사용되는 디자인 패턴은, 프로그램 개발에서 자주 나타나는 과제를 해결하기 위한 방법 중 하나로, 과거의 소프트웨어 개발 과정에서 발견된 설계의 노하우를 축적하여 이름을 붙여, 이후에 재이용하기 좋은 형태로 특정의 규약을 묶어서 정리한 것이다. 알고리즘과 같이 프로그램 코드로 바로 변환될 수 있는 형태는 아니지만, 특정한 상황에서 구조적인 문제를 해결하는 방식을 설명해 준다. 이 용어를 소프트웨어 개발 영역에서 구체적으로 처음 제시한 곳은, GoF(Gang of Four)라 불리는 네명의 컴퓨터 과학 연구자들이 쓴 서적 'Design Patterns: Elements of Reusab..