프로그래밍 536

디자인 패턴 ProtoType패턴

Prototype패턴 인스턴스를 만들때 new연산자를 쓰는게 아니라 어떤 인스턴스로부터 인스턴스를 만드는 패턴입니다. framework패키지의 Product 클래스 package framework; public interface Product extends Cloneable{//Cloneable인터페이스를 상속받아야 clone메소드 사용 가능 public abstract void use(String s); public abstract Product createClone();//복사본을 만드는 메소드 } framework패키지의 Manage클래스 package framework; import java.util.HashMap; public class Manager { /** * @uml.property na..

디자인 패턴 singleton 패턴

singleton 패턴 어떤 클래스의 인스턴스가 반드시 1개만 존재하도록 하고싶을때 인스턴스가 1개밖에 존재하지 않을 것을 프로그램 상에서 표현하고 싶을 때 이 패턴을 씁니다. 코드를 보면서 분석해봅시다. public class Singleton { //클래스변수를 만들어서 딱 하나만 만들게 됩니다. private static Singleton singleton = new Singleton(); //아래와같이 생성자가 private로 두어서 메인에서 생성할 수 없게 합니다. private Singleton(){ System.out.println("인스턴스를 생성했습니다."); } //클래스 메소드로 딱 하나 만든 클래스변수를 반환하게 합니다. public static Singleton getInstanc..

디자인 패턴 Factory Method 패턴

Factory Method 패턴 인스턴스를 만드는 방법은 상위클래스 측에서 결정하지만 구체적인 클래스 이름까지는 결정하지않습니다. 구체적인 내용은 하위 클래스 측에서 수행합니다. 아래 소스를 보면 Factory 클래스는 제품을 구체적으로 어떻게 만드는지는 말하지않고 만들고 제품을 등록한다 이 정도만 정의를 하게됩니다. package framework; public abstract class Factory { //Template Method패턴을 사용함 Factory에서는 Product를 생산하고 public final Product create(String owner){ Product p = createProduct(owner); registerProduct(p); return p; } //아래는 하위클..

디자인 패턴 Template Method 패턴

Template Method패턴 상위클래스에서 어떤 처리의 뼈대를 결정하고 하위 클래스에서 그 구체적인 내용을 결정하는 디자인 패턴입니다. 어렵지않은 패턴이라서 아래 코드들을 분석해보면 쉽게 이해하실수 있을겁니다. public abstract class AbstractDisplay { //추상메소드 3개 public abstract void open(); public abstract void print(); public abstract void close(); //추상메소드를 이용해서 메소드를 구현해둠 //추상메소드는 자식 클래스에서 구체화 될 예정 public final void display(){ open(); for(int i=0; i < 5; i++){ print(); } close(); } } ..

디자인 패턴 위임에 의한 Adapter 패턴(인스턴스를 이용한)

2번째 위임을 사용한 어댑터 패턴(인스턴스를 사용한) 소스를 보면 어떻게 인스턴스를 사용한 것인지 이해가 될 것입니다. public class Banner { private String string; Banner(String string){ this.string = string; } public void showWithParen(){ System.out.println("(" + string + ")"); } public void showWithAster(){ System.out.println("*" + string + "*"); } } public abstract class Print { public abstract void printWeak(); public abstract void printStron..

디자인 패턴 Adapter패턴 상속을 사용한 Adapter패턴

Adapter 패턴 노트북에 사용하는 어댑터처럼 이미 제공된것(ac220볼트) 과 필요한것 (dc 19v)의 차이를 없애주는 패턴방법 1. 클래스에 의한 Adapter 패턴(상속을 사용한 것) 2. 인스턴스에 의한 Adapter패턴(위임을 사용한 것) 첫번째 방법을 사용해 봅시다. 나오는 클래스를 설명하면 제공되고있는 것(ac220) Banner클래스(showWithParen, showWithAster) 어댑터 PrintBanner 클래스 필요한것(dc 19v) Print인터페이스(printWeak, printStrong) public class Banner { private String string; Banner(String string){ this.string = string; } public voi..

안드로이드 스마트폰 진동을 내맘대로 다뤄보자

Object Activity.getSystemService(String name) 으로 서비스를 받아온뒤 void vibrate(long milliseconds) void vibrate(long[] pattern, int repeat) void cancel() 을 이용합니다. 메니페스트파일에 퍼미션 추가에 유의합시다. 메니페스트 파일 접근 방법은 아래에 있습니다. package com.android.ex26; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.os.Vibrator; import android.view.View; import android.view.View.O..

디자인패턴 Chain of Responsibility 패턴

책임의 사슬 패턴 핸드폰이 고장나면 일단 구매처에 물어보고 구매처는 as센터로 가라고 하고 as센터에서는 이건 못고친다고 하면서 용산 전문 수리점으로 가라고 한다. 이렇게 책임 떠넘기기를 디자인패턴으로 표현했다. Trouble 클래스 package kch; public class Trouble { //발생한 트러블을 표현하는 클래스 /** * @uml.property name="number" */ private int number;//트러블 번호 public Trouble(int number){ this.number = number;//트러블의 생성 } /** * @return * @uml.property name="number" */ public int getNumber(){ return number;..

반응형