(Created page with "Duck, Fly, Quack. Comentários em breve. <java5> public abstract class Duck { FlyBehavior flyBehavior; QuackBehavior quackBehavior; public Duck() ...") |
|||
Line 3: | Line 3: | ||
Comentários em breve. | Comentários em breve. | ||
− | < | + | <source lang="java"> |
public abstract class Duck { | public abstract class Duck { | ||
FlyBehavior flyBehavior; | FlyBehavior flyBehavior; | ||
Line 19: | Line 19: | ||
public void swim() { System.out.println("All ducks float, even decoys!"); } | public void swim() { System.out.println("All ducks float, even decoys!"); } | ||
} | } | ||
− | </ | + | </source> |
− | < | + | <source lang="java"> |
public class RubberDuck extends Duck { | public class RubberDuck extends Duck { | ||
public RubberDuck() { | public RubberDuck() { | ||
Line 29: | Line 29: | ||
public void display() { System.out.println("I'm a rubber duckie"); } | public void display() { System.out.println("I'm a rubber duckie"); } | ||
} | } | ||
− | </ | + | </source> |
− | < | + | <source lang="java"> |
public class RedHeadDuck extends Duck { | public class RedHeadDuck extends Duck { | ||
public RedHeadDuck() { | public RedHeadDuck() { | ||
Line 39: | Line 39: | ||
public void display() { System.out.println("I'm a real Red Headed duck"); } | public void display() { System.out.println("I'm a real Red Headed duck"); } | ||
} | } | ||
− | </ | + | </source> |
=== Comportamento de Voo === | === Comportamento de Voo === | ||
Line 45: | Line 45: | ||
Este comportamento está relacionado com a forma de voar do pato: existe uma família de comportamentos de voo. Os elementos desta família podem ser associados a patos, alterando-se desse modo o comportamento do pato em voo. | Este comportamento está relacionado com a forma de voar do pato: existe uma família de comportamentos de voo. Os elementos desta família podem ser associados a patos, alterando-se desse modo o comportamento do pato em voo. | ||
− | < | + | <source lang="java"> |
public interface FlyBehavior { public void fly(); } | public interface FlyBehavior { public void fly(); } | ||
− | </ | + | </source> |
− | < | + | <source lang="java"> |
public class FlyWithWings implements FlyBehavior { | public class FlyWithWings implements FlyBehavior { | ||
public void fly() { System.out.println("I'm flying!!"); } | public void fly() { System.out.println("I'm flying!!"); } | ||
} | } | ||
− | </ | + | </source> |
− | < | + | <source lang="java"> |
public class FlyNoWay implements FlyBehavior { | public class FlyNoWay implements FlyBehavior { | ||
public void fly() { System.out.println("I can't fly"); } | public void fly() { System.out.println("I can't fly"); } | ||
} | } | ||
− | </ | + | </source> |
− | < | + | <source lang="java"> |
public class FlyRocketPowered implements FlyBehavior { | public class FlyRocketPowered implements FlyBehavior { | ||
public void fly() { System.out.println("I'm flying with a rocket"); } | public void fly() { System.out.println("I'm flying with a rocket"); } | ||
} | } | ||
− | </ | + | </source> |
=== Comportamento de Grasnar === | === Comportamento de Grasnar === | ||
Line 71: | Line 71: | ||
Este comportamento está relacionado com a forma de grasnar do pato: tal como para o voo, existe uma família de comportamentos de grasnar. Os elementos desta família podem ser associados a patos, alterando-se desse modo o comportamento do pato, relativamente à acção de grasnar. | Este comportamento está relacionado com a forma de grasnar do pato: tal como para o voo, existe uma família de comportamentos de grasnar. Os elementos desta família podem ser associados a patos, alterando-se desse modo o comportamento do pato, relativamente à acção de grasnar. | ||
− | < | + | <source lang="java"> |
public interface QuackBehavior { public void quack(); } | public interface QuackBehavior { public void quack(); } | ||
− | </ | + | </source> |
− | < | + | <source lang="java"> |
public class Quack implements QuackBehavior { | public class Quack implements QuackBehavior { | ||
public void quack() { System.out.println("Quack"); } | public void quack() { System.out.println("Quack"); } | ||
} | } | ||
− | </ | + | </source> |
− | < | + | <source lang="java"> |
public class Squeak implements QuackBehavior { | public class Squeak implements QuackBehavior { | ||
public void quack() { System.out.println("Squeak"); } | public void quack() { System.out.println("Squeak"); } | ||
} | } | ||
− | </ | + | </source> |
− | < | + | <source lang="java"> |
public class MuteQuack implements QuackBehavior { | public class MuteQuack implements QuackBehavior { | ||
public void quack() { System.out.println("<< Silence >>"); } | public void quack() { System.out.println("<< Silence >>"); } | ||
} | } | ||
− | </ | + | </source> |
Mais informação sobre este exemplo particular pode ser obtida no livro Head First Design Patterns. | Mais informação sobre este exemplo particular pode ser obtida no livro Head First Design Patterns. |
Duck, Fly, Quack.
Comentários em breve.
public abstract class Duck {
FlyBehavior flyBehavior;
QuackBehavior quackBehavior;
public Duck() {}
public void setFlyBehavior(FlyBehavior fb) { flyBehavior = fb; }
public void setQuackBehavior(QuackBehavior qb) { quackBehavior = qb; }
abstract void display();
public void performFly() { flyBehavior.fly(); }
public void performQuack() { quackBehavior.quack(); }
public void swim() { System.out.println("All ducks float, even decoys!"); }
}
public class RubberDuck extends Duck {
public RubberDuck() {
flyBehavior = new FlyNoWay();
quackBehavior = new Squeak();
}
public void display() { System.out.println("I'm a rubber duckie"); }
}
public class RedHeadDuck extends Duck {
public RedHeadDuck() {
flyBehavior = new FlyWithWings();
quackBehavior = new Quack();
}
public void display() { System.out.println("I'm a real Red Headed duck"); }
}
Este comportamento está relacionado com a forma de voar do pato: existe uma família de comportamentos de voo. Os elementos desta família podem ser associados a patos, alterando-se desse modo o comportamento do pato em voo.
public interface FlyBehavior { public void fly(); }
public class FlyWithWings implements FlyBehavior {
public void fly() { System.out.println("I'm flying!!"); }
}
public class FlyNoWay implements FlyBehavior {
public void fly() { System.out.println("I can't fly"); }
}
public class FlyRocketPowered implements FlyBehavior {
public void fly() { System.out.println("I'm flying with a rocket"); }
}
Este comportamento está relacionado com a forma de grasnar do pato: tal como para o voo, existe uma família de comportamentos de grasnar. Os elementos desta família podem ser associados a patos, alterando-se desse modo o comportamento do pato, relativamente à acção de grasnar.
public interface QuackBehavior { public void quack(); }
public class Quack implements QuackBehavior {
public void quack() { System.out.println("Quack"); }
}
public class Squeak implements QuackBehavior {
public void quack() { System.out.println("Squeak"); }
}
public class MuteQuack implements QuackBehavior {
public void quack() { System.out.println("<< Silence >>"); }
}
Mais informação sobre este exemplo particular pode ser obtida no livro Head First Design Patterns.