面向对象设计方案实现duck
关键点:面向接口编程,不是面向实现编程 如:quackBehavior=new Quack();flyBehavior=new FlyWithWings();
1、MallarDuckSimulator
package duck_firstWork;
public class MallarDuckSimulator {
public static void main(String[] args) {
// TODO Auto-generated method stub
Duck mallard=new MallarDuck();
mallard.performQuack();
mallard.performFly();
}
}
2、Duck)
package duck_firstWork;
public abstract class Duck {
FlyBehavior flyBehavior;
QuackBehavior quackBehavior;
public abstract void display();
public void performFly() {
flyBehavior.fly();
}
public void performQuack() {
quackBehavior.quack();
}
public void swim() {
System.out.println("All ducks float,even decoys!");
}
}
3、FlyBehavior)
package duck_firstWork;
public interface FlyBehavior {
public void fly();
}
4、FlyNoWay
package duck_firstWork;
public class FlyNoWay implements FlyBehavior {
@Override
public void fly() {
// TODO Auto-generated method stub
System.out.println("I can't fly");
}
}
5、FlyWithWings
package duck_firstWork;
public class FlyWithWings implements FlyBehavior {
@Override
public void fly() {
// TODO Auto-generated method stub
System.out.println("I'm flying!");
}
}
6、MallarDuck
package duck_firstWork;
public class MallarDuck extends Duck {
public MallarDuck() {
quackBehavior=new Quack();
flyBehavior=new FlyWithWings();
}
@Override
public void display() {
// TODO Auto-generated method stub
System.out.println("I am a real Mallard duck");
}
}
7、MuteQuack
package duck_firstWork;
public class MuteQuack implements QuackBehavior {
@Override
public void quack() {
// TODO Auto-generated method stub
System.out.println("silence");
}
}
8、Quack
package duck_firstWork;
public class Quack implements QuackBehavior {
@Override
public void quack() {
// TODO Auto-generated method stub
System.out.println("Quack");
}
}
9、QuackBehavior
package duck_firstWork;
public interface QuackBehavior {
public void quack();
}
10、Squeak
package duck_firstWork;
public class Squeak implements QuackBehavior {
@Override
public void quack() {
// TODO Auto-generated method stub
System.out.println("Squeak");
}
}