소프트웨어 개발/Design Pattern 16

⑦ 디자인 패턴(Design Pattern) - Factory

팩토리 디자인 패턴은 자바에서 참 많이 구경할수 있는 대표적인 패턴이다. 팩토리는 내부적으로 상품을 하나 찍어내어 전달해주는 역할을 한다. 보통, new를 통해 인스턴스를 생성하는 경우가 대부분이지만, 팩토리에서는 Factory 혹은 이를 구현한 concrete Factory에서 인스턴스를 넘겨주게 된다. 대표적인 팩토리 패턴을 따르는 애들은 사실 Calendar이다. getInstance()를 통해서 객체를 생성하게 되는데 (보통은 create()메서드로 관습화 되어있는데, 칼렌더에서의 getInstance()는 너무 자주쓰다보니 이게 대체로 싱글톤 패턴에서 쓰이는 메서드인것과 혼동이 올때가 있다.) 이는 계속 칼렌다를 만들어 찍어내서 보내준다. new를 쓰는 방법과 다른점은, 추상클래스나 인터페이스를..

⑧ 디자인 패턴(Design Pattern) - Observer

옵저버는 도대체 어떤놈인가? 옵저버는 어떤 객체를 살펴서 그 소식을 전해주는 일종의 정찰병의 느낌이다. 스타크래프트의 옵저버는 이상한 소리나 내면서 그냥 공중에 안들키게 할일없이 떠있는 놈에 불과하지만, 얘는 쪼금더 뭔가 적극적인 느낌이다. 마치 고양이 목에 방울을 다는것과 같은 효과이다. 여기서 방울은 옵저버이며, 고양이는 관찰이 되는 대상이다. 일단, Observer 인터페이스와 Cat 클래스는 다음과 같다. Cat클래스는 옵저버에 관련된 메서드가 있어야 하는데, 이는 마치 고양이에 방울을 달아주는 역할을 한다. Cat 에는 priavet ArrayList //고양이 방울 리스트 public addObserver(Observer observer) //방울을 다는 메서드 public removeObse..

대표적 디자인 패턴 목록

Iterator - 순서대로 지정하여 처리하기 위함 Adapter - 버전 호환성을 가지기 위함 Template Method - 하위메서드에 구체적인 구현 위임 Factory Method - 템플릿처럼 클래스를 만들어냄 Singleton - 인스턴스 하나만 허용 Prototype - 클래스의 종류가 많아 정리하기 어려울때 Builder - 복잡한 인스턴스 하나씩 쌓아올림 Abstract Factory - Bridge - Strategy - Composite - Decorator - Visitor - Chain of Responsibility - Facade - Mediator - Observer - 옵저버를 추가해서 상태변화가 있을때 로직을 실행하기 위함 Memento - 상태를 저장하기 위함 (undo..

⑨ 디자인 패턴(Design Pattern) - Prototype

게임몬스터등을 만들때 쓴다. 왜냐고? 이름등이 바뀌어야되고 각각의 속성을 지니고 있어야 되기 때문에 참조형으로 데리고 있으면 안된다. 따라서, 계속 클론을 해서 넘겨주면, 리젠하는 각각의 객체를 만들수 있다. 출처 : http://alleysark.tistory.com/entry/Design-pattern-Prototype /* Prototype.java */ public interface Prototype { public Prototype Clone(); } /* Monster.java */ public class Monster implements Prototype { private int minDamage; private int maxDamage; private String nameColor; pub..

⑩ 디자인 패턴(Design Pattern) - Builder

package builderpattern; package builderpattern; public class Gorakgarak { private boolean sexy; private boolean handsome; private String phoneNumber; public static class Builder { //클래스 안에 static으로 바로 사용할수 있게 위치시켜줌. private boolean sexy; private boolean handsome; private String phoneNumber; public Builder(){ System.out.println("test"); } public Builder sexy(boolean value){ sexy = value; return t..

⑪ 디자인 패턴(Design Pattern) - Single Ton

싱글톤 패턴. 보통의 클래스는 new를 이용해서 새로운 객체를 생성하고 그것을 이용하게 된다. 다만, 단순한 프로그램의 경우에는 굳이 패턴들에대해 고민하지 않고 main에서 new를 한번 해준다음에 필요한 작업을 한다. 하지만 여러 클래스와 산재해 있는 함수에서 같은 객체에 접근해야할 필요가 있을 수 있다. 그 예로, 안드로이드 프로그램같은 경우, 대부분 VIEW하나에 public 클래스가 하나씩 존재한다. 하지만, 프로그램을 개발하다 보면 객체를 공유해서 써야하는 경우가 있다. 파일시스템이나 데이터베이스에서 가져온 데이터를 메모리에 올려서 쓰게 되는데, public class가 달라져버려 new로는 공유 데이터를 접근하지 못한다. 따라서 사용자의 객체 생성을 생성자에 pricava예약어로 막고, 프로그..