티스토리 뷰
전략패턴
전략패턴 = 의존성 역전 + 리스코프 치환원칙( 느슨한 결합 )
▶의존성 역전
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | package di02_2; public class Kid { public static void main(String[] args) { Attackable attack = new PunchAttack(); Robot robot = new Robot(attack); //생성자에 주입 Constructor Injection // robot.setAttack(attack); // 세터에 주입 Setter Injection robot.fight(); } } | cs |
RoboRobot 클래스에서 Attack들이 쓰여짐 → Robot에서 Attack들의 객체를 만들지 않고 Kid에서 Robot도 만들고 Attack도 만들어서 사용
▶리스코프 치환원칙( 느슨한 결합 )
1 2 3 4 5 6 | package di02_2; public interface Attackable { public void attack(); } | cs |
1 2 3 4 5 6 7 | package di02_2; public class MissileAttack implements Attackable { public void attack(){ System.out.println("미사일어택"); } } | cs |
1 2 3 4 5 6 7 8 | package di02_2; public class PunchAttack implements Attackable { public void attack(){ System.out.println("펀치어택"); } } | cs |
3. 추상적인 Attack기능에 대해 구체적으로 구현( Missile 인지 Punch 인지 )하는 클래스들을 작성
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | package di02_2; public class Robot { private Attackable attack; public Robot(Attack attack){ // Constructor Injection this.attack = attack; } // public void setAttack(Attack attack) { //Setter Injection // this.attack = attack; // } public void fight(){ System.out.println("로봇이 싸워요"); attack.attack(); } } | cs |
'Design Pattern > Design Pattern' 카테고리의 다른 글
[Pattern] 프록시 패턴( Proxy Pattern ) (403) | 2016.06.10 |
---|---|
[Pattern] 빌더 패턴 ( Builder Pattern ) (1) | 2016.05.24 |
[Pattern] 템플릿 메소드 패턴 ( Template Method Pattern ) (0) | 2016.05.24 |
[Pattern] MVC Pattern (0) | 2016.04.21 |
댓글