[ STRAGE Patterns ]
public interface FlyBehavior
{
public void fly();
}
public class FlyWithWings implements FlyBehavior
{
public void fly()
{
print("날고 있어!");
}
}
public class FlyNoWay implements FlyBehavior
{
public void fly()
{
print("저는 날지 못해요 ㅜㅜ ")
}
}
public class FlyRocketPowered implements FlyBehavior
{
public void fly()
{
print("로켓처럼 날아 갑니다!")
}
}
* 인터페이스 구현 FlyWithWings , FlyNoWay , FlyRocketPowered
* 인터페이스 구현으로 인터페이스 안에 메서두 필히 구현해야함..
인터페이스 FlyBehavior로 모두 생성 가능...
-----------------------------------------------------------------------
public interface QuackBehavior
{
public void quack();
}
public class Quack implements QuackBehavior
{
public void quack()
{
print("꾸엑");
}
}
public class MuteQuack implements QuackBehavior
{
public void quack()
{
print(".....조용");
}
}
* 인터페이스 구현 Quack , MuteQuack
* 인터페이스 구현으로 인터페이스 안에 메서두 필히 구현해야함..
인터페이스 QuackBehavior 로 모두 생성 가능...
-----------------------------------------------------------------------
public abstract class Duck
{
FlyBehavior flyBehavior;
QuackBehavior quackBehavior;
public void performFly()
{
flyBehavior.fly();
}
public void perfomQuick()
{
quackBehavior.quakc();
}
public void SetFlyBehavior(FlyBehavior fb)
{
flyBehavior = fb;
}
public void SetQuackBehavior(QuackBehavior qb)
{
QuackBehavior = qb;
}
}
* abstract 클래스다...
* 다른 클래스가 상속 받을때 필요한 부분이 기술되어 있다.
-----------------------------------------------------------------------
public class MallardDuck extend Duck
{
public MallardDuck()
{
quackBehavior = new Quack();
flyBehavior = new FlyWithWings();
}
}
public class ModelDuck extend Duck
{
public ModelDuck()
{
flyBehavior= new FlyNoWay();
quackBehavior = new Quack();
}
}
Duck를 상속 받는다.
-----------------------------------------------------------------------
public class DuckSimulator
{
public static void main(String[] args)
{
Duck mallard = new MallardDuck();
mallard.performQuack();
mallard.performFly();
Duck model = new ModelDuck();
model.performFly();
model.SetFlyBehavior(new RoKetPowered());
model.performFly();
}
}
// 꾸엑
//날고있어!
//저는 날지 못해요 ㅜㅜ
//로켓처럼 날아 갑니다!
아 졸리다...
좀 더 정리해서 쉽게 이해할 수 있게 적고 싶은데
ㅜㅜ
자야지 우선....