Java设计模式之策略模式Strategy Pattern

这个设计模式就是说 不管以后需求发生了什么变化
设计原则
找出应用中可能需要变化之处,把他们独立出来,不要和不需要变化的代码放在一起
把会变的部分抽取出来并封装,以便以后可以轻易地改动或者扩充此部分,而不影响不需要变化的部分

目的:系统中的某部分改变不会影响其他部分

设计原则
针对接口编程,而不是针对实现编程

设计原则
少用组合,少用继承

在这里插入图片描述
Demo
超类

package com.daniel.test;

import com.daniel.InterFace.FlyBehavior;
import com.daniel.InterFace.QuackBehavior;

public abstract class Duck {
	FlyBehavior flyBehavior;
	QuackBehavior quackBehavior;
	
	public void swim() {
		System.out.println("swimming");
	}
	public void display() {
		System.out.println("displaying");
	}
	public void performQuack() {
		quackBehavior.quack();
	}
	public void performFly() {
		flyBehavior.fly();
	}
	public void SetQuack() {
		
	}
	public void SetFly() {
		
	}
}

子类

import com.daniel.InterFace.FlyWithWings;
import com.daniel.InterFace.Quack;

public class DecoyDuck extends Duck {
	
	public DecoyDuck() {
		// TODO Auto-generated constructor stub
		quackBehavior = new Quack();
		flyBehavior= new FlyWithWings();
	}
	@Override
	public void display() {
		System.out.println("我是诱饵鸭");
	}
}

测试类

package com.daniel.test;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Duck decoy = new DecoyDuck();
		decoy.performFly();
		decoy.performQuack();
		decoy.display();

	}

}

最终结果
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41910103/article/details/89068575