디자인 패턴이란?
프로그래밍을 효율적으로 해서 유지보수까지 무난하게 할수있는 코딩 기법이라고 생각하시면 되겠습니다.
오늘은 스트래티지 패턴을 포스팅하겠습니다.
스트래티지 패턴이란?
:하나의 추상적인 접근점을 만들어 접근점에서 서로 교환 가능하도록 하는 패턴
스트래티지 패턴의 예는 과일로 설명하겠습니다.
과일가게안에는 여러 과일이 있고 과일마다 색상,가격 등이 다 다를것입니다.
사과는 500원 바나나는 1000원 이런식으로 ....
이것을 프로그래밍에 접목시켜 본다면
과일들은 다르지만 크게 봤을때 가격,색상 등 종류에 상관없이 다 가지고 있는 속성이 있습니다.
이것을 공통적인 속성을 과일 인터페이스에 적용을 하고 각 과일들은 그 인터페이스를 상속받은후
각 요청에 맞게 사용하시면 됩니다.
말 보단 코드를 보시면 이해가 쉬울실껍니다.
크게 5개의 .java 파일이 필요합니다.
Fruit : interface
Apple : 사과(과일)
Banana : 바나나(과일)
Customer: 소비자
Main : 실행시킬파일
- Fruit.java
1 2 3 4 5 6 7 8 | package test; public interface Fruit { public void Price(); } | cs |
과일들의 공통 속성중 하나인 Price를 만들겠습니다.
Price말고도 색상,크기등 속성들을 추가하면 더 많은 기능을 사용할수 있겠죠!!
참고로 만약 인터페이스에 대해 모르신다면 따로 공부를 먼저 하셔야해요
- Apple.java
1 2 3 4 5 6 7 8 9 10 11 | package test; public class Apple implements Fruit{ @Override public void Price() { // TODO Auto-generated method stub System.out.println("500원"); } } | cs |
Fruit 인터페이스를 상속받은후
Price를 재정의 해줍니다.
- Banana.java
1 2 3 4 5 6 7 8 9 10 11 | package test; public class Banana implements Fruit{ @Override public void Price() { // TODO Auto-generated method stub System.out.println("1000원"); } } | cs |
Fruit 인터페이스를 상속받은후
Price를 재정의 해줍니다.
- Customer.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | package test; public class Customer { private Fruit ft; Customer() { } public void setOrder(Fruit ft) { this.ft = ft; } public void ShowPrice() { ft.Price(); } } | cs |
- Main.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | package test; public class Main { public static void main(String[] args) { Customer c = new Customer(); c.setOrder(new Apple()); c.ShowPrice(); c.setOrder(new Banana()); c.ShowPrice(); } } | cs |
Customer의 객체는 한개만 만들었지만 즉 , 어떤 과일인지에 따라서 결과값이 다르게 나오죠!!
이것이 바로 스트래티지 패턴입니다.
<출력결과>
'프로그래밍 > 디자인 패턴' 카테고리의 다른 글
디자인패턴은 왜 비슷한것들이 많은가? (0) | 2019.01.17 |
---|---|
Template Method 패턴이란? (0) | 2019.01.07 |