본문 바로가기

[ programing ]/Design Patterns

STRAGE Patterns




[ 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();

}

}





// 꾸엑

//날고있어!

//저는 날지 못해요 ㅜㅜ

//로켓처럼 날아 갑니다!





         아 졸리다...

         좀 더 정리해서 쉽게 이해할 수 있게 적고 싶은데

          ㅜㅜ


         자야지 우선....