Head First

    xiaoxiao2021-03-26  28

    package Strategy_Pattern; /* * head first 设计模式 完整代码练习 * * 1.策略模式(封装算法,让算法之间可以相互代替。<好处:使得算法的变化独立于使用算法的客户。>) * * * */ public abstract class Strategy_Pattern_Duck { FlyBehaver flyBehaver; EatDifference eatDifference; // 习惯写空的构造方法 public Strategy_Pattern_Duck() { }; // 用接口来实现具体的算法 public void flyPerform() { flyBehaver.fly(); } public void eatPerform() { eatDifference.eat(); } } package Strategy_Pattern; interface FlyBehaver { // 飞行的方法 void fly(); } class FlywhitB implements FlyBehaver { @Override public void fly() { // TODO Auto-generated method stub System.out.println("FlywhitB"); } } class FlywhitA implements FlyBehaver { @Override public void fly() { // TODO Auto-generated method stub System.out.println("FlywhitA "); } } package Strategy_Pattern; public interface EatDifference { void eat(); } class EatApple implements EatDifference { @Override public void eat() { // TODO Auto-generated method stub System.out.println("this is duck eatting Apple!"); } } class EatBanana implements EatDifference { @Override public void eat() { // TODO Auto-generated method stub System.out.println("this is duck eatting banana!"); } } package Strategy_Pattern; public class WhiteDuck extends Strategy_Pattern_Duck { public WhiteDuck() { // 具体的whiteDuck有具体的eat和fly的方法 flyBehaver = new FlywhitB(); eatDifference = new EatApple(); } public void sayHello() { System.out.println("这是WhiteDuck!"); } } package Strategy_Pattern; public class Test { public static void main(String arg[]) { Strategy_Pattern_Duck d = new WhiteDuck(); d.eatPerform(); d.flyPerform(); ((WhiteDuck) d).sayHello(); } }

    转载请注明原文地址: https://ju.6miu.com/read-661988.html

    最新回复(0)