您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息
三六零分类信息网 > 唐山分类信息网,免费分类信息发布

使用PHP策略模式

2024/3/27 7:03:32发布41次查看
问题:
1.如果让我们定义一只鸭子类,有游泳和外貌两个方法。
2.当需求增加的时候,我们需要给鸭子类增加飞行和叫声的方法
3.不是所有的鸭子都会叫或者都会飞行,一般的鸭子会,塑料鸭不会飞只会叫,橡皮鸭不会飞也不会叫。
4.当需求又要改变的时候,我们新增加了一个青蛙类,青蛙会叫。
等等一系列当需求改变的时候,我们代码难以处理。这个时候我们可以考虑策略模式。
如果你使用策略模式,那么你的代码变得有弹性,代码如下1.我们创建一个会飞的接口public interface fly { public void flybehavior(); }
2.写你需要的类实现这个接口public class flynoway implements fly{ @override public void flybehavior() { system.out.println("不会飞"); } }
public class flywithwings implements fly{ @override public void flybehavior() { system.out.println("用翅膀飞"); } }
3.创建鸭子类public abstract class duck { //多态形式定义飞行 private fly fly; //多态的形式定义叫声 private quackbehavior quackbehavior; public void display(){ system.out.println("黄色的鸭子"); } public void swim(){ system.out.println("鸭子可以游泳"); } public void perforfly(){ fly.flybehavior(); } public void perforquack(){ quackbehavior.quack(); } public fly getfly() { return fly; } public void setfly(fly fly) { this.fly = fly; } public quackbehavior getquackbehavior() { return quackbehavior; } public void setquackbehavior(quackbehavior quackbehavior) { this.quackbehavior = quackbehavior; } }
4.子类继承父类,并且让子类变得有自己的特色public class rubberduck extends duck{ public rubberduck(){ //在创造这个子类的时候就确定了它具体的飞行和叫声方法 setfly(new flynoway()); setquackbehavior(new mutequack()); } @override public void display() { system.out.println("白色的橡皮鸭"); } }
5.如果此时我们需要加入一个青蛙类,也有呱呱呱的叫声也是一样的写法,因为用策略模式让你的代码变得有弹性。6.测试类public class testmain { public static void main(string[] args) { kedaduck kedaduck = new kedaduck(); kedaduck.display(); kedaduck.perforfly(); kedaduck.perforquack(); plasticduck plasticduck = new plasticduck(); plasticduck.display(); plasticduck.perforfly(); plasticduck.perforquack(); rubberduck rubberduck = new rubberduck(); rubberduck.display(); rubberduck.perforfly(); rubberduck.perforquack(); rana rana = new rana(); rana.perforquack(); } }
总结1.多用组合,少用继承。 2.在项目开始前就策划好,让其代码变得有弹性,防止增加和改变需求。 3.把一样的放在本类里,把不一样的容易变的部分抽出去。最后在组合起来。
相关推荐:
php策略模式 
实例分析php策略模式     
以上就是使用php策略模式的详细内容。
唐山分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录