接口应用——策略模式

策略模式(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);
	}
}


转载于:https://my.oschina.net/u/2296916/blog/609822

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值