【ThinkingInJava】12、适配器设计模式

/**
* 书本:《Thinking In Java》
* 功能:适配器设计模式
* 文件:Processor.java
* 时间:2015年4月2日20:36:59
* 作者:cutter_point
*/
package Lesson9Interfaces.interfaceprocessor;

public interface Processor
{
	String name();
	Object process(Object input);
}

/**
* 书本:《Thinking In Java》
* 功能:适配器设计模式
* 文件:Apply.java
* 时间:2015年4月2日20:36:59
* 作者:cutter_point
*/
package Lesson9Interfaces.interfaceprocessor;

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

public class Apply
{
	public static void process(Processor p, Object s)
	{
		print("Using Processor " + p.name());
		print(p.process(s));
	}
}
/**
* 书本:《Thinking In Java》
* 功能:适配器设计模式
* 文件:StringProcessor.java
* 时间:2015年4月2日20:36:59
* 作者:cutter_point
*/
package Lesson9Interfaces.interfaceprocessor;

import java.util.Arrays;

public abstract class StringProcessor implements Processor {

	@Override
	public String name()
	{
		return this.getClass().getSimpleName();
	}

	@Override
	public abstract String process(Object input);

	public static String s = "If she weights the same as a duck, she`s made of wood";

	public static void main(String [] args)
	{
		Apply.process(new Upcase(), s);
		Apply.process(new Downcase(), s);
		Apply.process(new Splitter(), s);
	}
}

class Upcase extends StringProcessor
{

	public String process(Object input)
	{
		return ((String) input).toUpperCase();
	}

}

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

class Splitter extends StringProcessor
{

	public String process(Object input)
	{
		return Arrays.toString( ( (String) input).split(" "));
	}

}

上一篇里面说过,那两个类耦合太高了,我们如何解耦就在这篇里面,我们可以吧Processor类写成接口,这样用一个抽象类实现这个接口,那么耦合就会变得松动,那么Apply.process()就可以得到复用,接收一个Object参数!!!

输出结果:

Using Processor Upcase  obj1

IF SHE WEIGHTS THE SAME AS A DUCK, SHE`S MADE OF WOOD  obj1

Using Processor Downcase  obj1

if she weights the same as a duck, she`s made of wood  obj1

Using Processor Splitter  obj1

[If, she, weights, the, same, as, a, duck,, she`s, made, of, wood]  obj1

时间: 2024-11-02 11:21:18

【ThinkingInJava】12、适配器设计模式的相关文章

【ThinkingInJava】14、适配器设计模式 (2)

/** * 书本:<Thinking In Java> * 功能:适配器设计模式 * 文件:FilterAdapter.java * 时间:2015年4月2日20:52:07 * 作者:cutter_point */ package Lesson9Interfaces.interfaceprocessor; import Lesson9Interfaces.filters.BandPass; import Lesson9Interfaces.filters.Filter; import Les

适配器设计模式

类的适配器模式 对象的适配器模式 接口的适配器模式 思想: 将类的某个接口转换成客户端期望的另一个接口表示 目的: 消除由于接口不匹配造成的类的兼容性问题 1.UML图之类的适配器设计模式 public class Source { 2. 3. public void method1() { 4. System.out.println("this is original method!"); 5. } 6.} [java] view plaincopy 1.public interfa

适配器设计模式初探(Java实现)

本篇随笔主要介绍Java实现设配器设计模式. 先来看下待解决的问题: (图片转自http://blog.csdn.net/jason0539) 由上图的情况可知,欧洲壁式插座只有三足插口,如果我们想要使用的是两足插口,就需要适配器来进行转换.(适配器一面是三足插口,一面是两足插口) 适配器模式一般有两种实现方式: 1.类适配器 2.对象适配器. 先来看下类适配器的UML图:  客户端只能操纵 Target 接口的 Request 方法来进行需要的操作(当然这里就相当于调用 Request 方法使

6.适配器设计模式

public interface PinPlug{ void charge(); } 1.概述 适配器设计模式针对如下情况:-----客户需要用某个接口,但是能提供服务的接口没有实现那个接口. 客户端只能使用某种接口---客户端是台灯,接口是双孔插座 服务端----服务类是三孔插座 适配器类是服务类和客户端中间的一个桥接类---插线板 2.代码 适配器模式的分类: 类适配器----通过继承实现 对象适配器--通过组合实现 2.1类适配器 功能描述:为台灯充上电照明(台灯只能使用双孔插座) pub

适配器设计模式简介

适配器模式是将将一个类的接口适配成用户所期待的. 生活中适配器也无处不在.常见的是电源适配器.一个15V笔记本通过电源适配器可以接在220V的电压下使用. 想象这么一个需求场景.在项目早期建立了很多类库,这个类库中方法众多,代码复杂,加入新的方法后或者修改旧有方法会使得原类库中方法大幅修改.(或者类库源码找不到了,也难以进行修改).那么此时可以重新建立一个新接口,通过适配器而使用原有方法. 适配器模式就是将一个接口转化为客户希望的另一个接口. 适配器的常用分类: 现在主要介绍单向适配器和单接口适

12种设计模式c++源码

12种设计源码 源码下载(c++)地址 http://download.csdn.net/detail/lv836735240/7707409 java版 http://download.csdn.net/detail/lv836735240/7707423 12种设计模式c++源码

接口 interface 以及适配器设计模式原理

定义接口用的不是class,而是interface. 接口中常见的成员:而且这些成员都是固定的修饰符. 1.全局变量:public static final (不写的时候java会默认添加上去,但是阅读性不好) 2.抽象方法:public abstract 接口中的成员都是公共权限的. 类与类之间是继承关系,类与接口之间是实现关系. 接口实现implements 接口不可以实例化,只能由实现了接口的子类覆盖了接口中所有的抽象方法后,该子类才可以实例化,否则这个子类就是一个抽象类. 在java中不

java开发中使用的适配器设计模式

package shipeiqidemo; /* * java中常见的一种设计模式:适配器 * 来源:一个子类要去实现接口,那么就必须要实现接口全部的抽象方法,有的时候抽象方法 * 很多,但是又用不着去全部实现,所以此时就定义一个抽象类去实现这个接口,然后通过子类去继承 * 这个抽象类,这个抽象类就简称适配器 */ public class shipeiqidemo { public static void main(String[] args) { //zhuozi zz = new zhuo

java设计模式之适配器设计模式

1.定义 将一个类的接口转换成客户希望的另一个接口.适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 2.意识图 3.代码示例 原本只能对user类进行读和写操作,现在要适配成可以crud 1).实体类 package com.wyl.apapter; import java.io.Serializable; /** * 实体类 * [email protected] * 2017年12月27日 */ public class User implements Serializ