관리 메뉴

bread, coffee and coding

Design Patterns D-1 본문

Design Patterns

Design Patterns D-1

DongJin lee 2021. 7. 14. 13:10

더보기
package org.example;

interface  FlyBehavior {
    public void fly();
}
class FlyWithWings implements FlyBehavior{

    @Override
    public void fly() {
        System.out.println("날아다닌다");
    }
}
class FlyNoWay implements FlyBehavior{

    @Override
    public void fly() {
        System.out.println("날지못한다");
    }
}

interface QuackBehavior{
    void quakc();
}

class Quack implements QuackBehavior{

    @Override
    public void quakc() {

    }
}

class Squeck implements QuackBehavior{

    @Override
    public void quakc() {

    }
}
class MuteQuack implements QuackBehavior{

    @Override
    public void quakc() {

    }
}


interface Flyable{
    void fly();
}
interface  Quackable{
    void quack();
}

class Duck {
   //has-a (포함) is -a (상속)
    FlyBehavior flyBehavior;
    QuackBehavior quackBehavior;

    public void swim(){
    }
    public void display(){
    }
}

class MallerdDuck extends Duck  {

    MallerdDuck(){
        flyBehavior = new FlyWithWings();
        quackBehavior = new Quack();
    }

    @Override
    public void display() {
        System.out.println("MallerDuck~~");
    }

}

class RedheadDuck extends Duck implements Flyable,Quackable {
    @Override
    public void display() {
        System.out.println("ReadhaedDuck~~");
    }

    @Override
    public void fly() {

    }

    @Override
    public void quack() {

    }
}
class RubberDuck extends Duck implements Quackable {

    RubberDuck(){
        flyBehavior = new FlyNoWay();
        quackBehavior = new MuteQuack();
    }

    @Override
    public void quack() {

    }
}

class DecoyDuck extends Duck {

    @Override
    public void display() {
        super.display();
    }
}
public class Main {
    public static void main(String[] args) {
        MallerdDuck duck1 = new MallerdDuck();
        RedheadDuck duck2 = new RedheadDuck();
        RubberDuck rubberDuck = new RubberDuck();
        duck1.display();
        duck2.display();

        duck1.flyBehavior.fly();
        rubberDuck.flyBehavior.fly();
        rubberDuck.quackBehavior.quakc();

    }

}

 

 

 

'Design Patterns' 카테고리의 다른 글

Design Patterns Quiz (Observer)  (0) 2021.07.15