<span style="font-size:18px;"><strong>----策略模式</strong></span><p><span style="font-size:18px;"><strong> 设计算法族,少用继承,多用组合,便于优化。</strong></span></p><pre name="code" class="java">
//<span style="color:#FF0000;">叫声算法族</span>
package voice;
/**
* Created by Administrator on 2016/10/27 0027.
*/
public interface Voice
{
void voice();
}package voice;
/**
* Created by Administrator on 2016/10/27 0027.
*/
public class GoodVoice implements Voice
{
@Override
public void voice()
{
System.out.println("叫的动听");
}
}
package voice;
/**
* Created by Administrator on 2016/10/27 0027.
*/
public class BadVoice implements Voice
{
@Override
public void voice()
{
System.out.println("叫的难听");
}
}
<pre name="code" class="java">
//<span style="color:#FF0000;">飞行算法族</span>
package fly;
/**
* Created by Administrator on 2016/10/27 0027.
*/
public interface Fly
{
void fly();
}
package fly;
/**
* Created by Administrator on 2016/10/27 0027.
*/
public class GoodFly implements Fly
{
@Override
public void fly()
{
System.out.println("飞的不错");
}
}
package fly;
/**
* Created by Administrator on 2016/10/27 0027.
*/
public class BadFly implements Fly
{
@Override
public void fly()
{
System.out.println("飞的很差");
}
}
package duck;
import fly.Fly;
import voice.Voice;
/**
* Created by Administrator on 2016/10/27 0027.
*/
public abstract class Duck
{
Fly fly;
Voice voice;
public Duck()
{
}
public abstract void display();
public void fly()
{
fly.fly();
}
public void voice()
{
voice.voice();
}
}
package duck;
import fly.GoodFly;
import voice.GoodVoice;
/**
* Created by Administrator on 2016/10/27 0027.
*/
public class BlackDuck extends Duck
{
public BlackDuck()
{
fly = new GoodFly();
voice = new GoodVoice();
}
@Override
public void display()
{
System.out.println("黝黑的");
}
}
package duck;
import fly.BadFly;
import voice.BadVoice;
/**
* Created by Administrator on 2016/10/27 0027.
*/
public class WhiteDuck extends Duck
{
public WhiteDuck()
{
fly = new BadFly();
voice = new BadVoice();
}
@Override
public void display()
{
System.out.println("黝黑的");
}
}
package duck;/** * Created by Administrator on 2016/10/27 0027. */public class TestDuck{ public static void main(String[] args) { BlackDuck bd = new BlackDuck(); WhiteDuck wd = new WhiteDuck(); bd.display(); bd.voice(); bd.fly(); wd.display(); wd.voice(); wd.fly(); }}