接口应用——策略模式
接口应用——策略模式
来来来过来挨到我坐 发表于2年前
接口应用——策略模式
  • 发表于 2年前
  • 阅读 2
  • 收藏 0
  • 点赞 1
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

策略模式(Strategy Pattern),定义了一系列的算法,将每一种算法封装起来并可以相互替换使用,策略模式让算法独立于使用它的客户应用而独立变化。


OO设计原则:

  1. 面向接口编程(面向抽象编程)

  2. 封装变化

  3. 多用组合,少用继承

package com.main;

//策略设计模式
public class StrategyPattern {

	public static void main(String[] args) {
		Duck trueDuck = new TrueDuck("真鸭子");
		trueDuck.setSwim(new SwimImpl());// 设置游泳的具体实现
		trueDuck.swim();
		System.out.println("--------------");
		Duck modelDuck = new ModelDuck("模型鸭子");
		modelDuck.setSwim(new NotSwimImpl());// 设置游泳的具体实现
		modelDuck.swim();
	}

}

// 是否会游泳的接口(将游泳这一种能力抽象出来)
interface Swimable {
	public void swim();
}

// Swimable接口的实现类1
class SwimImpl implements Swimable {

	@Override
	public void swim() {
		System.out.println("会游泳");
	}
}

// Swimable接口的实现类2
class NotSwimImpl implements Swimable {

	@Override
	public void swim() {
		System.out.println("不会游泳");
	}
}

class Duck {
	private String name;
	// 只说明有游泳这个属性,并不去确定是否会游泳
	private Swimable swim;

	public void setSwim(Swimable swim) {
		this.swim = swim;
	}

	public Duck(String name) {
		this.name = name;
	}

	public void swim() {
		System.out.print("我是" + name + ",");
		swim.swim();
	}

}

// 真鸭子具体类
class TrueDuck extends Duck {

	public TrueDuck(String name) {
		super(name);
	}
}

// 模型鸭子具体类
class ModelDuck extends Duck {

	public ModelDuck(String name) {
		super(name);
	}
}


  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 1
博文 13
码字总数 7493
×
来来来过来挨到我坐
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: