Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- c++ 정규식
- c3 second
- 정규식 컴파일
- c3 축 없애기
- snmp test
- 정규식 문자열 출력
- python popen
- 백준
- centos pyhon 설치
- g++ 업데이트
- linux시간으로 변경
- c3 축 가리기
- python subprocess
- telegraf
- selinux port 등록
- influxdb 설치
- InfluxDB
- 1697
- 정규식 활용
- snmp
- python os
- subporcess path
- grafana dashboard
- c3 초
- semanage
- gcc 업데이트
- gcc regex
- c3 step graph
- CentOS7
- regex_search
Archives
- Today
- Total
리셋 되지 말자
팩토리 메서드 패턴(Factory Method Pattern) 본문
팩토리 메서드 패턴
팩토리 메서드는 객체를 생성 반환하는 메서드를 말한다. 여기에 패턴이 붙으면, '하위 클래스에서 팩토리 메서드를 오버라이딩하여 객체를 반환하게 하는 것'을 의미한다.
예시 코드
- Coffee.java
package factoryMethodPattern;
public abstract class Coffee {
public abstract String getName();
}
- Americano.java
package factoryMethodPattern;
public class Americano extends Coffee{
public String getName() {
return "Americano";
}
}
- Moka.java
package factoryMethodPattern;
public class Moka extends Coffee{
public String getName() {
return "Moka";
}
}
- CoffeeFactory.java
package factoryMethodPattern;
public abstract class CoffeeFactory {
public abstract Coffee createCoffee(String name);
public void boilCoffee() {
System.out.println("Boiling Coffee...");
}
}
- MakeCoffeeFactory.java
package factoryMethodPattern;
public class MakeCoffeeFactory extends CoffeeFactory{
@Override
public Coffee createCoffee(String name) {
if(name=="아메리카노")
return new Americano();
else if(name=="모카")
return new Moka();
else return null;
}
}
- CoffeeClient.java
package factoryMethodPattern;
public class CoffeeClient {
public static void main(String[] args) {
CoffeeFactory cf = new MakeCoffeeFactory();
Coffee americanoCoffee = cf.createCoffee("아메리카노");
Coffee mokaCoffee = cf.createCoffee("모카");
cf.boilCoffee();
System.out.println(americanoCoffee.getName());
System.out.println(mokaCoffee.getName());
}
}
main() 함수를 보면 팩토리 메서드를 보유한 객체를 이용하여 new 키워드 없이 이용해 커피들을 생성하고 있다.
정리
- 오버라이딩된 메서드가 객체를 반환하는 패턴을 팩토리 메서드 패턴이라고 한다.
- 팩토리 메서드 패턴은 의존 역전 원칙(DIP)을 활용한다. - 클라이언트가 추상 클래스에 의존하며, 추상 클래스는 콘크리트 클래스에 의존된다.
- 클래스간의 결합도를 낮출 수 있다.
'Java(폐지) > 디자인 패턴' 카테고리의 다른 글
전략 패턴(Strategy Pattern) 2 (0) | 2020.08.05 |
---|---|
전략 패턴(Strategy Pattern) (0) | 2020.08.05 |
템플릿 메서드 패턴(Template Method Pattern) (0) | 2020.08.04 |
싱글톤 패턴(Singleton Pattern) (0) | 2020.08.04 |
데코레이터 패턴(Decorator Pattern) (0) | 2020.08.04 |
Comments