`

深入浅出设计模式七——Adapter模式(结构型)

阅读更多
 将两个不兼容的类或者说没有关系的类纠合在一起使用。就要在使用中间类,这个类即指适配器类。
如:有两种类打方形桩类和打圆形桩类。现在我们即需要打方形桩又需要打圆形桩。那么需要利用继承和组合的特性来创建适配器类。
package com.lwf.object.adapter;

public class SquarePeg {

	public void insert(String str){
		System.out.println("SquarePeg insert():" + str);
	}
}

 

 

package com.lwf.object.adapter;

public class RoundPeg {

	public void insertIntohole(String msg){
		System.out.println("RoundPeg insertIntohole():" + msg);
	}
}

 

 

package com.lwf.object.adapter;

public class PegAdapter extends SquarePeg {

	RoundPeg roundPeg = null;
	public PegAdapter(RoundPeg roundPeg){
		this.roundPeg = roundPeg;
	}
	
	public void insertHole(String msg){
		roundPeg.insertIntohole(msg);
	}
	public static void main(String[] args) {
		RoundPeg roundPeg = new RoundPeg();
		PegAdapter p = new PegAdapter(roundPeg);
		p.insert("sfjsljfsf");
		p.insertHole("hole");
	}
}

 

 

当我们需要继承来自多个类的特性的时候,结合面向接口编程的原则:

package com.lwf.object.adapter;

public interface iSquarePeg {
	public void insert(String str);
}

 

 

package com.lwf.object.adapter;

public interface iRoundPeg {
	public void insertIntohole(String msg);
}

 

package com.lwf.object.adapter;

public class SquarePeg implements iSquarePeg{

	public void insert(String str){
		System.out.println("SquarePeg insert():" + str);
	}
}

 

package com.lwf.object.adapter;

public class RoundPeg implements iRoundPeg{

	public void insertIntohole(String msg){
		System.out.println("RoundPeg insertIntohole():" + msg);
	}
}

 

package com.lwf.object.adapter;

public class PegAdapter implements iSquarePeg,iRoundPeg {

	private iSquarePeg iSquarePeg;
	private iRoundPeg iRoundPeg;
	
	public PegAdapter(iSquarePeg iSquarePeg,iRoundPeg iRoundPeg){
		this.iSquarePeg = iSquarePeg;
		this.iRoundPeg = iRoundPeg;
	}
	public void insert(String str){
		iSquarePeg.insert(str);
	}
	public void insertIntohole(String msg){
		iRoundPeg.insertIntohole(msg);
	}
	
	public static void main(String[] args) {
		iSquarePeg iSquarePeg = new SquarePeg();
		iRoundPeg iRoundPeg = new RoundPeg();
		PegAdapter p = new PegAdapter(iSquarePeg,iRoundPeg);
		p.insert("sfjsljfsf");
		p.insertIntohole("hole");
	}
}

  

图分别对应上面的两段代码.

对于采用继承和组合来完成的适配叫对象适配,就是UML的第一个图.

后面的叫类适配,UML图中的第二个图

分享到:
评论

相关推荐

    深入浅出设计模式(中文版电子版)

    第4章GoF-StructuralDesignPatterns结构型设计模式 95 4.1AdapterPattern(适配器模式) 96 4.1.1定义 96 4.1.2现实中的实例——电脑电源适配器 97 4.1.3C#实例——化学数据银行 98 4.1.4Java实例——清洁系统 ...

    设计模式精解

    "设计模式精解"这个主题涵盖了这两本重要的书籍——《设计模式精解》和《深入浅出设计模式》,它们都是理解并掌握设计模式的重要资源。 首先,让我们来看看《设计模式精解》这本书可能涉及的关键知识点。设计模式...

    设计模式精解-GoF23种设计模式解析附C实现源码.pdf

    《设计模式精解——GoF23种设计模式解析附C实现源码》这本书提供了深入浅出的设计模式讲解,同时通过C语言的具体实现案例,帮助读者更好地理解和应用这些模式。 #### 二、设计模式简介 设计模式是一种通用的、在...

    JAVA设计模式(中文).chm

    《JAVA设计模式(中文).chm》是一部专为Java开发者准备的设计模式指南,它深入浅出地阐述了软件工程中的重要概念——设计模式。设计模式是解决常见编程问题的成熟解决方案,是经验丰富的开发者们在实践中总结出的最佳...

    design-pattern-java.pdf

    七个结构型模式 七个结构型模式 适配器模式-Adapter Pattern 不兼容结构的协调——适配器模式(一) 不兼容结构的协调——适配器模式(二) 不兼容结构的协调——适配器模式(三) 不兼容结构的协调——适配器模式...

    设计模式与JAVA

    《设计模式与JAVA》这本书是面向Java开发者的一本经典教程,它深入浅出地介绍了软件设计中的重要概念——设计模式。设计模式是经验丰富的软件开发人员在解决常见问题时所形成的可重用解决方案,它们是经过时间考验的...

    HeadFirst设计模式笔记

    总的来说,《HeadFirst设计模式笔记》通过`PizzaIngredientFactory`的例子,深入浅出地介绍了设计模式的重要性及其在实际编程中的应用。学习和掌握设计模式,能帮助开发者编写出更加优雅、灵活的代码,提高团队协作...

    HeadFirst Design Pattern

    这本书深入浅出地介绍了软件工程中的核心概念——设计模式,这些模式是经验丰富的开发者在解决常见问题时总结出的最佳实践。 设计模式是对在特定情境下软件设计问题解决方案的一种描述,它们是可复用的,能够提升...

    Design Patterns Elements Of Reusable Object-Oriented Software

    通过上述分析可以看出,《设计模式——可重用面向对象软件的要素》是一本深入浅出地介绍了设计模式的重要书籍。无论是对于初学者还是有经验的开发人员来说,这本书都能够提供有价值的指导和启发。

Global site tag (gtag.js) - Google Analytics