适配器模式
来源:互联网 发布:网络推手阿建推网红 编辑:程序博客网 时间:2024/06/03 18:16
适配器模式
public class ProductA {
privatelong item_id;
private Stringitem_name;
privatefloat price;
private Stringunit;
public ProductA(longitem_id, String item_name,float price, Stringunit) {
super();
this.item_id =item_id;
this.item_name =item_name;
this.price =price;
this.unit =unit;
}
public long getItem_id() {
returnitem_id;
}
public void setItem_id(long item_id) {
this.item_id =item_id;
}
public String getItem_name() {
returnitem_name;
}
public void setItem_name(String item_name) {
this.item_name =item_name;
}
public float getPrice() {
returnprice;
}
public void setPrice(float price) {
this.price =price;
}
public String getUnit() {
returnunit;
}
public void setUnit(String unit) {
this.unit =unit;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return"item_id:"+item_id+"\titem_name:"+item_name+"\tprice:"+price+"\tunit:"+unit;
}
}
而在项目对接中你们使用了这样的产品类ProductB
public class ProductB {
private StringitemId;
private Stringprice;
private StringitemName;
private StringitemUnit;
public ProductB() {
super();
// TODO Auto-generated constructor stub
}
public ProductB(StringitemId, String price, StringitemName, String itemUnit) {
super();
this.itemId =itemId;
this.price =price;
this.itemName =itemName;
this.itemUnit =itemUnit;
}
public String getItemId() {
returnitemId;
}
public void setItemId(String itemId) {
this.itemId =itemId;
}
public String getPrice() {
returnprice;
}
public void setPrice(String price) {
this.price =price;
}
public String getItemName() {
returnitemName;
}
public void setItemName(String itemName) {
this.itemName =itemName;
}
public String getItemUnit() {
returnitemUnit;
}
public void setItemUnit(String itemUnit) {
this.itemUnit =itemUnit;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return"itemID:"+itemId+"\titemName:"+itemName+"\tprice:"+price+"\tunit:"+itemUnit;
}
}
这时为了简单的在不动原代码的前提下实现你们两端的数据互通有无,就需要适配器将数据转换这里有一个比较简单的转换器public class ProductA2BAdapter {
private ProductAproductA;
public ProductA2BAdapter(ProductAproductA) {
this.productA =productA;
}
public ProductB transform() {
ProductB productB =new ProductB();
productB.setItemId(String.valueOf(productA.getItem_id()));
productB.setPrice(String.valueOf(productA.getPrice()));
productB.setItemUnit(productA.getUnit());
productB.setItemName(productA.getItem_name());
returnproductB;
}
}
public static final void main(String[]args){
ProductA productA =new ProductA(289796235415l, "hat", 15f, "Pice");
System.out.println(productA.toString());
ProductA2BAdapter a2bAdapter = new ProductA2BAdapter(productA);
ProductB productB =a2bAdapter.transform();
System.out.println(productB.toString());
}
item_id:289796235415 item_name:hatprice:15.0 unit:Pice
itemID:289796235415 itemName:hatprice:15.0 unit:Pice
是不是就可以解决了从A部门到B部门之间的转换,你也可以写一个比较通用的方法,这样只需要一个适配器对象就可以实现批量的产品转换,如果数据量比较大对象比较复杂还可以加上原型模式。
适配器模式是为了解决在原有基础上开发的问题,如果在一开始A和B两个部门就可以沟通使用同一个模型就不会有这种事。所以事前就考虑好这种问题的话就不会出现这个问题。
- 适配器及适配器模式
- 适配器及适配器模式
- 适配器模式(类适配器)
- 适配器模式(默认适配器)
- 适配器模式(对象适配器)
- 适配器模式-类适配器
- 适配器模式-对象适配器
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 基于面向连接的socket编程
- Mysql 更新时间结果所有的时间都更新
- Java 实现长图文生成
- VC读写剪贴板
- 子序列的和(subsequence)
- 适配器模式
- 引言之“财务管理”
- RecyclerView 的回收和复用
- Oracle 中 nvl、nvl2、nullif、coalesce、decode 函数的用法详解
- Git提交项目到GitHub配置
- 查看uboot源代码的预备知识
- JavaScript—易犯错的题目
- 关于WINDOWS去ping linux为什么ping不通
- Spark Core 调优指南