首页 > 代码库 > 面向对象-duck
面向对象-duck
package oo;
public interface Duck {
public void fly();
public void quack();
}
package oo;
public class MallardDuck implements Duck {
public void fly()
{
System.out.println("I‘m flying");
}
public void quack()
{
System.out.println("Quack");
}
}
package oo;
public interface Turkey {
public void gobble();
public void fly();
}
package oo;
public class WildTurkey implements Turkey{
public void gobble()
{
System.out.println("Gobble gobble");
}
public void fly()
{
System.out.println("I‘m flying a short distance");
}
}
package oo;
import java.util.Random;
public class DuckAdapter implements Turkey{
Duck duck;
Random rand;
public DuckAdapter(Duck duck)
{
this.duck=duck;
rand=new Random();
}
public void gobble()
{
duck.quack();
}
public void fly()
{
if (rand.nextInt(5)==0)
{
duck.fly();
}
}
}
package oo;
public class TurkeyAdapter implements Duck{
Turkey turkey;
public TurkeyAdapter(Turkey turkey)
{
this.turkey=turkey;
}
public void quack()
{
turkey.gobble();
}
public void fly()
{
for (int i=0;i<5;i++)
{
turkey.fly();
}
}
}
package oo;
public class DuckTestDrive {
public static void main(String[]args)
{
MallardDuck duck=new MallardDuck();
WildTurkey turkey=new WildTurkey();
Duck turkeyAdapter=new TurkeyAdapter(turkey);
System.out.println("the turkey says..");
turkey.gobble();
turkey.fly();
System.out.println("the duck says..");
test(duck);
System.out.println("the turkeyadapter says..");
test(turkeyAdapter);
}
static void test(Duck duck)
{
duck.quack();
duck.fly();
}
}
package oo;
public class TurkeyTestDrive {
public static void main(String []args)
{
MallardDuck duck=new MallardDuck();
Turkey duckAdapter=new DuckAdapter(duck);
for(int i=0;i<10;i++)
{
System.out.println("the duckadapter says..");
duckAdapter.gobble();
duckAdapter.fly();
}
}
}
面向对象-duck