"팩토리 메소드 패턴"의 두 판 사이의 차이

10번째 줄: 10번째 줄:
==예제 (java)==
==예제 (java)==
<source lang='java'>
<source lang='java'>
public class MazeGame {
interface CarFactory {
  public MazeGame() {
public Car makeCar();
    Room room1 = makeRoom();
    Room room2 = makeRoom();
    room1.connect(room2);
    this.addRoom(room1);
    this.addRoom(room2);
  }
  protected Room makeRoom() {
    return new OrdinaryRoom();
  }
}
}
</source>
 
<source lang='java'>
interface Car {
public class MagicMazeGame extends MazeGame {
public String getType();
  @Override
}
  protected Room makeRoom() {
 
      return new MagicRoom();
class SedanFactory implements CarFactory {
  }
public Car makeCar() {
return new Sedan();
}
}
 
class Sedan implements Car {
public String getType() {
return "Sedan";
}
}
 
public class Main {
public static final void main(String[] args) {
SedanFactory sedanFactory = new SedanFactory();
Car car = sedanFactory.makeCar();
System.out.println("Type: " + car.getType() );
}
}
}
</source>
</source>

2013년 2월 26일 (화) 07:16 판

1 개요

factory method pattern; factory method, factory pattern
팩토리 메소드 패턴, 팩토리 메서드, 팩토리 패턴
  • 하위클래스에서 인스턴스 생성하도록 하는 구조
  • 공장에서 제품을 만들어내듯, OO공장 인스턴스가 OO을 만들어내는 구조
  • 추상 단계[1]에서는 생성하려는 객체의 클래스를 정확히 지정하지 않음

FactoryMethod.svg

2 예제 (java)

interface CarFactory {
	public Car makeCar();
}

interface Car {
	public String getType();
}

class SedanFactory implements CarFactory {
	public Car makeCar() {
		return new Sedan();
	}
}

class Sedan implements Car {
	public String getType() {
		return "Sedan";
	}
}

public class Main {
	public static final void main(String[] args) {
		SedanFactory sedanFactory = new SedanFactory();
		Car car = sedanFactory.makeCar();
		System.out.println("Type: " + car.getType() );
	}
}

3 같이 보기

4 주석

  1. interface 또는 abstract class

5 참고 자료

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}