package AdapterModel;
/**
* Adapter模式的意图:是将一个类的接口转化成客户希望的另外一个接口,
* 使得原本由于接口或其他不兼容而不能一起工作的那些类可以一起工作。
* 它适应以下情况:
* 1、需要使用一个已存在的类,但它的接口不符合需求。
* 2、想创建一个可以复用的类,但该类可以与其他不相关的类或不可以预见的类协同工作。
* 3、想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口
* @author Administrator
* 要实现适配器模式,一般有两种方式:组合(composition)和集成(inheritance)。
* 但使用集成容易产生语义上的含糊,画图类DrawLine和DrawRound显然不存在父子关系。
* 所以比较灵活的解决方法是采取组合的方式,建立一个DrawImage的适配器类。
*
*/
class DrawImage {
private DrawLine drawLine;//组合DrawLine类,把它变成私有实例
private DrawRound drawRound;//组合DrawRound类,把它变成私有实例
public DrawImage(DrawLine line,DrawRound round){
this.drawLine = line;
this.drawRound = round;
}
//调用drawLine实例,实现画虚线
public void drawBrokenLine(){
drawLine.drawBrokeLine();
}
//调用drawRound实现,实现画椭圆
public void drawEllipse(){
drawRound.drawEllipse();
}
public static void main(String args[]){
DrawImage image = new DrawImage(new DrawLine(),new DrawRound());
//以下方法组合得来
image.drawBrokenLine();
image.drawEllipse();
}
}
==================================================================
package AdapterModel;
public class DrawLine {
public void drawBrokeLine(){
System.out.println("画虚心的方法......");
}
}
=================================================================
package AdapterModel;
public class DrawRound {
public void drawEllipse(){
System.out.println("画椭圆的方法......");
}
}
/**
* Adapter模式的意图:是将一个类的接口转化成客户希望的另外一个接口,
* 使得原本由于接口或其他不兼容而不能一起工作的那些类可以一起工作。
* 它适应以下情况:
* 1、需要使用一个已存在的类,但它的接口不符合需求。
* 2、想创建一个可以复用的类,但该类可以与其他不相关的类或不可以预见的类协同工作。
* 3、想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口
* @author Administrator
* 要实现适配器模式,一般有两种方式:组合(composition)和集成(inheritance)。
* 但使用集成容易产生语义上的含糊,画图类DrawLine和DrawRound显然不存在父子关系。
* 所以比较灵活的解决方法是采取组合的方式,建立一个DrawImage的适配器类。
*
*/
class DrawImage {
private DrawLine drawLine;//组合DrawLine类,把它变成私有实例
private DrawRound drawRound;//组合DrawRound类,把它变成私有实例
public DrawImage(DrawLine line,DrawRound round){
this.drawLine = line;
this.drawRound = round;
}
//调用drawLine实例,实现画虚线
public void drawBrokenLine(){
drawLine.drawBrokeLine();
}
//调用drawRound实现,实现画椭圆
public void drawEllipse(){
drawRound.drawEllipse();
}
public static void main(String args[]){
DrawImage image = new DrawImage(new DrawLine(),new DrawRound());
//以下方法组合得来
image.drawBrokenLine();
image.drawEllipse();
}
}
==================================================================
package AdapterModel;
public class DrawLine {
public void drawBrokeLine(){
System.out.println("画虚心的方法......");
}
}
=================================================================
package AdapterModel;
public class DrawRound {
public void drawEllipse(){
System.out.println("画椭圆的方法......");
}
}