JAVA

자바 Strategy 패턴 추상클래스, 인터페이스 적용

로픽 2018. 6. 22. 07:00
300x250

자바 Strategy 패턴 추상클래스, 인터페이스 적용


이전에 작성한 패턴은 추상클래스만 이용하였습니다.

이번에는 인터페이스를 같이 적용한 Strategy 패턴입니다.



EX) 등급별로 다른 기능을 가진 로봇 만들기

2개의 패키지를 생성하여 만들었습니다.

1개는 이전에 추상클래스만 있는 패키지

1개는 인터페이스를 포함한 패키지입니다.

RobotEx.java


public class RobotEx {
public static void main(String[] args) {
Robot sr = new SuperRobot();
System.out.println("슈퍼로봇");
sr.shape();
sr.actionWalk();
sr.actionRun();
sr.actionFly();
sr.actionMissile();
sr.actionSword();
}
}

Robot.java

import pattern.inter.IFly;
import pattern.inter.IMissile;
import pattern.inter.ISword;

public abstract class Robot {
IFly fly;
ISword sword;
IMissile missile;
//공통 메소드
public abstract void shape();
public void actionWalk() {
// TODO Auto-generated method stub
System.out.println("로봇은 걸을 수 있습니다.");
}
public void actionRun() {
// TODO Auto-generated method stub
System.out.println("로봇은 달릴 수 있습니다.");
}
public void setIfly(IFly fly) {        //클래스를 설정하기 위한 setter
this.fly = fly;
}

public void setIsword(ISword sword) {
this.sword = sword;
}

public void setImissile(IMissile missile) {
this.missile = missile;
}

//인터페이스 내부의 메소드를 실행시켜준다
public void actionSword() {
// TODO Auto-generated method stub
this.sword.sword();           //sword메소드는 인터페이스에서 만든 메소드
}
public void actionFly() {
// TODO Auto-generated method stub
this.fly.fly();
}
public void actionMissile() {
// TODO Auto-generated method stub
this.missile.missile();
}
}


SupterRobot.java


import pattern.inter.FlyYes;

import pattern.inter.MissileYes;

import pattern.inter.SwordYes;


public class SuperRobot extends Robot{

public SuperRobot() {

// TODO Auto-generated constructor stub

fly = new FlyYes();

sword = new SwordYes();

missile = new MissileYes();

}

@Override

public void shape() {

// TODO Auto-generated method stub

System.out.println("슈퍼로봇의 외형은 머리, 몸통, 다리, 팔입니다.");

}

}


IFly.java (인터페이스)


package pattern.inter;


public interface IFly {    //fly, sword, missile 인터페이스를 만들었습니다.

void fly();

}


FlyYes.java


package pattern.inter;


public class FlyYes implements IFly {


@Override

public void fly() {

// TODO Auto-generated method stub

System.out.println("로봇은 날 수 있습니다.");

}

}




다양한 클래스와 인터페이스가 있어서 코드는 전체적으로 올리지 못했습니다.


그래서 ZIP 파일을 올렸습니다.  패턴에 대해 연습할떼 참고하세요~




자바 Strategy_pattern ZIP 파일


Strategy_pattern.zip


반응형