Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package factoryMethodPattern;

public abstract class Animal {
abstract AnimalToy getToy();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package factoryMethodPattern;

public abstract class AnimalToy {
abstract void identify();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package factoryMethodPattern;

public class Cat extends Animal {

@Override
AnimalToy getToy() {
return new CatToy();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package factoryMethodPattern;

public class CatToy extends AnimalToy {
@Override
void identify() {
System.out.println("나는 고양이 장남감이야");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package factoryMethodPattern;

public class Dog extends Animal {

@Override
AnimalToy getToy() {
return new DogToy();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package factoryMethodPattern;

public class DogToy extends AnimalToy {

@Override
void identify() {
System.out.println("나는 강아지 장난감이야");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package factoryMethodPattern;

public class FactoryMethodMain {
public static void main(String[] args) {
// 팩터리 메서드를 보유한 객체들 생성
Animal bolt = new Dog();
Animal kitty = new Cat();

// 팩터리 메서드가 반환하는 객체들
AnimalToy boltBall = bolt.getToy();
AnimalToy kittyTower = kitty.getToy();

// 팩터리 메서드가 반환한 객체들을 사용
boltBall.identify();
kittyTower.identify();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# 팩토리 메서드 패턴
- 객체를 생성할 때 어떤 클래스의 인스턴스를 만들지를 서브 클래스에서 결정하게 함으로써, 새로운 구현 클래스가 추가되어도 기존 Factory 코드의 수정 없이 새로운 Factory 를 추가할 수 있게 해준다.
-


# Reference
- https://dev-youngjun.tistory.com/195