【ThinkingInJava】10、完全解耦,策略设计模式

/**
* 书本:《Thinking In Java》
* 功能:完全解耦,策略设计模式
* 	  这里apply.process()方法可以接受任何类型的processor,并将其应用到一个Object对象上,然后打印结果
* 文件:Apply.java
* 时间:2015年4月2日16:50:55
* 作者:cutter_point
*/
package Lesson9Interfaces.classprocessor;

import static net.mindview.util.Print.*;

import java.util.Arrays;

class Processor
{
	public String name()
	{
		return this.getClass().getSimpleName();
	}

	Object process(Object input) { return input; }
}

class Upcase extends Processor
{
	String process(Object input)
	{
		return ((String)input).toUpperCase();
	}
}

class Downcase extends Processor
{
	String process(Object input)
	{
		return ((String)input).toLowerCase();
	}
}

class Splitter extends Processor
{
	String process(Object input)
	{
		return Arrays.toString(((String)input).split(" "));
	}
}

public class Apply
{
	public static void process(Processor p, Object s)
	{
		print("Using Processor" + p.name());
		print(p.process(s));
	}

	public static String s = "I like China, I`m Chinese, I can!";

	public static void main(String [] args)
	{
		Processor p = new Processor();
		System.out.println(p.name());

		process(new Upcase(), s);
		process(new Downcase(), s);
		process(new Splitter(), s);
	}
}

结果:

Processor

Using ProcessorUpcase  obj1

I LIKE CHINA, I`M CHINESE, I CAN!  obj1

Using ProcessorDowncase  obj1

i like china, i`m chinese, i can!  obj1

Using ProcessorSplitter  obj1

[I, like, China,, I`m, Chinese,, I, can!]  obj1

时间: 2024-11-15 08:18:38

【ThinkingInJava】10、完全解耦,策略设计模式的相关文章

【ThinkingInJava】12、完全解耦,策略设计模式(2)

Waveform.java /** * 书本:<Thinking In Java> * 功能:完全解耦,策略设计模式 * 这里apply.process()方法可以接受任何类型的processor,并将其应用到一个Object对象上,然后打印结果 * 文件:Apply.java * 时间:2015年4月2日16:50:55 * 作者:cutter_point */ package Lesson9Interfaces.filters; public class Waveform { privat

设计模式之策略设计模式

一.何为策略设计模式呢? 在我的理解中,策略模式是尽量使用组合而非继承来实现一个行为,对一个方法的进行封装来使用,在组合类中进行调用时能够随时改变这一方法的运行时的内容.下面让我们来看看将一个实现改成策略模式后的便捷性. 二.一个简单的示例 假设我们有一个抽象的人,他拥有会踢球跟会乐器的技能,然后有一个只会踢球不会乐器的人继承了这个抽象的人类,还有一个只会乐器不会踢球的人继承了这个抽象的人类. 1 abstract class People{ 2 abstract void playBall()

接口的常用用法都有什么?策略设计模式复习总结

从之前的一个总结性话题引出: 从接口.抽象类到工厂模式再到JVM来总结一些问题 涉及的知识点总结如下: 策略模式概念和例子 工厂模式和策略模式比较 策略模式优缺点 策略模式的意义 使用了策略模式的API——HttpServlet类分析 解决策略膨胀问题——享元模式 StrategyPattern:策略模式也算比较简单的,同工厂模式一样都属于面向接口编程……策略模式是对象的行为模式之一,而工厂模式是对象的创建模式!它对一系列的算法加以封装,为所有算法定义一个抽象的算法接口,并通过继承该抽象算法接口

策略设计模式理解

我们开发过程中,常因为一开始的架构不怎么合理而有可能造成后边客户或者项目经理改需求时,造成我们需要修改原来的代码,一方面是可能写的时间久了回顾起来麻烦,另一方面是牵一发而动全身,改动一个地方造成所有的地方都需要改动,由此可见一个好的架构是多么重要.那么今天给大家讲一种策略设计模式来定义一个利于扩展的框架. 简单举个例子,我们开发一款游戏如果有需要定义一个角色,有武器攻击,有武器防御,那我们可能会觉得很简单,然后一开始定义就直接定义一个父类,再加一个子类实现,代码如下: abstract clas

应用策略设计模式

设计模式:设计模式(Design pattern)是一套被重复使用.多数人知晓的.经过分类编目的.代码设计经验的总结. 使用设计模式是为了可重用代码.让代码更easy被他人理解.保证代码可靠性. 毫无疑问,设计模式于己于他人于系统都是多赢的.设计模式使代码编制真正project化.设计模式是软件project的基石脉络.如同大厦的结构一样. 在最開始学习设计模式时.看着书籍,总是认为设计模式非常easy.但是.每次在实战的时候.常常渴望可以用上设计模式,但总是无法第一时间应用上某种设计模式. 明

JAVA学习笔记--策略设计模式与适配器模式

一.策略设计模式 创建一个能够根据所传递对象的不同而具有不同行为的方法被称为策略设计模式:这类方法包含所要执行的算法中固定不变的部分,而"策略"包含变化的部分.策略就是传递进去的参数对象,它包含要执行的代码. 这种设计模式将算法分别独立封装起来,然后将其当做参数传递给方法从而让方法产生不同的行为,不同的算法可以进行替换(就像给方法不同的实参).我们可以知道,在策略设计模式中有三个部分:策略.策略引用.接收策略引用的方法(这是笔者自己根据理解给出的名词,并没有查询有没有这些术语).下面通

【设计模式】1.策略设计模式

策略设计模式的定义: 策略设计模式是把每一个算法封装到具有共同接口的独立类中,具体算法之间可以相互替换或者变化,这种变化不会影响客户端. 关键词:[算法封装] [共同接口] [自由替换] 策略设计模式的代码: 1 public interface IStrategy { //共同接口 2 public void doSomething(); 3 } 4 class ConcreteStrategyA implements IStrategy { //具体策略A(算法) 5 public void

Strategy策略设计模式

1.策略模式和状态模式的区别和联系(本部分转载自:http://letscoding.cn/java%E4%B8%AD%EF%BC%8C%E7%8A%B6%E6%80%81%E6%A8%A1%E5%BC%8F%E5%92%8C%E7%AD%96%E7%95%A5%E6%A8%A1%E5%BC%8F%E7%9A%84%E5%8C%BA%E5%88%AB/) 策略模式通过封装一组相关算法,为Client提供运行时的灵活性.Client可以在运行时,选择任一算法,而不改变使用算法的Context.一些

策略设计模式的应用

设计模式:设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于己于他人于系统都是多赢的:设计模式使代码编制真正工程化:设计模式是软件工程的基石脉络,如同大厦的结构一样. 在最开始学习设计模式时,看着书籍,总是觉得设计模式很简单.可是,每次在实战的时候,经常渴望能够用上设计模式,但总是无法第一时间应用上某种设计模式.明明自己已经知晓了多个设计模式,看书