文档章节

接口应用——策略模式

来来来过来挨到我坐
 来来来过来挨到我坐
发布于 2016/01/26 15:40
字数 301
阅读 2
收藏 0

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


© 著作权归作者所有

共有 人打赏支持
来来来过来挨到我坐
粉丝 2
博文 13
码字总数 7493
作品 0
程序员
编程中的那些套路——关于工厂模式

该文章属于《编程中的那些经典套路——设计模式汇总》系列,并且以下内容基于语言PHP 前面我们写了简单工厂模式,《编程中的那些套路——关于简单工厂模式》,但简单工厂模式有一些不足(违反...

gzchen
08/27
0
0
编程中的那些套路——关于简单工厂模式

该文章属于《编程中的那些经典套路——设计模式汇总》系列,并且以下内容基于语言PHP 面向对象五大原则中有一点非常重要的原则:单一职责原则。 简单工厂模式就是遵循了这一原则,它让不同职...

gzchen
08/27
0
0
编程中的那些套路——关于策略模式

该文章属于《编程中的那些经典套路——设计模式汇总》系列,并且以下内容基于语言PHP 今天讲讲策略模式,策略模式 和工厂模式十分相像(或者说在代码逻辑层面,他们是一样的)。 但策略模式与...

gzchen
08/27
0
0
Java设计模式之抽象工厂模式

抽象工厂模式特点 抽象工厂模式与工厂模式最大的区别是每个单独的产品是一个工厂模式,而多个不同产品交互则是抽象工厂模式,抽象工厂模式通常要运用工厂模式的方法。通常,工厂模式的所有产...

断桥残雪断桥残雪
2015/08/09
0
0
简单工厂、工厂方法、抽象工厂、策略模式、策略与工厂的区别

转载:原地址http://www.cnblogs.com/zhangchenliang/p/3700820.html 简单工厂、工厂方法、抽象工厂、策略模式、策略与工厂的区别 结合简单示例和UML图,讲解工厂模式简单原理。 一、引子 话说...

法斗斗
05/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

DES/3DES(TripleDES)加密、解密测试数据

以下结果经 PHP+openssl及VB.NET验证,ECB模式。 PHP 7.0.10 (cli) (built: Aug 18 2016 09:48:53) ( ZTS ) OpenSSL Library Version: OpenSSL 1.0.1t 3 May 2016 VB.net 2003 ****** DES(S......

SamXIAO
17分钟前
0
0
Java11的新特性

Java语言特性系列 Java5的新特性 Java6的新特性 Java7的新特性 Java8的新特性 Java9的新特性 Java10的新特性 Java11的新特性 Java12的新特性 序 本文主要讲述一下Java11的新特性 版本号 java...

go4it
18分钟前
0
0
Maven常用命令及相关笔记

Maven常用命令 dos指令 4. 编译源代码: mvn compile 6. 运行测试: mvn test 8. 打包: mvn package 9. 在本地Repository中安装jar: mvn install 10. 清除产生的项目: mvn clean 4. 运行项...

颖伙虫
24分钟前
0
0
swagger2.2.2 与 spring cloud feign冲突 导致服务请求报空

swagger2.2.2 与 spring cloud feign冲突 Java代码 Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.choosefine.web.console.ar......

泉天下
27分钟前
0
0
设计模式之 明确责任 观察者模式 状态模式 责任链模式

观察者模式是任务分发的一种模式。 如果认为我们设计的系统的各个模块(或子系统)的最终目的是完成共同任务,那么这个任务如何分配到多个模块的就是我们遇到的第一个问题。简单设计场合我们...

backbye
32分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部