一、概念
- 官方概念:
适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。
这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。
二、场景
- 系统功能已经实现。
- 系统中的功能不兼容。
三、实现
- 条件
- java
- 场景
- 以添加商品为例,添加商品的同时,需要上传图片和上传视频。
- 实现
- 上传接口,类名:IUploadService
package com.AdapterPattern; public interface IUploadService { void Upload(String name,String typ); } - 图片上传实现类,类名:ProductPictureUploadService
package com.AdapterPattern; public class ProductPictureUploadService implements IUploadService { private ProductUploadAdapter productUploadAdapter = new ProductUploadAdapter(); @Override public void Upload(String name,String typ) { if(typ.equals("JPG")) { System.out.println(name + "图片上传成功!类型:" + typ); } else if (typ.equals("mp4")) { productUploadAdapter.Upload(name,typ); } } } - 视频上传实现类,类名:VideoUploadService
package com.AdapterPattern; public class VideoUploadService implements IUploadService{ @Override public void Upload(String name, String typ) { System.out.println(name+"上传成功!,类型:"+typ); } } - 适配器类,类名:ProductUploadAdapter
package com.AdapterPattern; public class ProductUploadAdapter implements IUploadService { public IUploadService iUploadService = new VideoUploadService(); @Override public void Upload(String name, String typ) { iUploadService.Upload(name,typ); } } - 商品接口类,类名:IProductService
package com.AdapterPattern; public interface IProductService { void InsertProduct(String name,String type); } - 商品实现类,类名:ProductService
package com.AdapterPattern; public class ProductService implements IProductService { public IUploadService iUploadService; @Override public void InsertProduct(String name,String type) { iUploadService.Upload(name,type); //上传图片 System.out.println("添加商品成功!"); } } - 入口函数,类名:Main
package com; import com.AdapterPattern.IProductService; import com.AdapterPattern.ProductPictureUploadService; import com.AdapterPattern.ProductService; public class Main { public static void main(String[] args) { ProductService ProductService = new ProductService(); ProductService.iUploadService = new ProductPictureUploadService(); ProductService.InsertProduct("腰果","JPG"); ProductService.InsertProduct("腰果","mp4"); } } - 上传接口,类名:IUploadService
四、优缺点
- 优点
- 保证客户端遵守开闭原则。
- 缺点
- 导致对象违背单一职责,职责不清晰。
- 代码理解难度上升。
适配器模式在产品上传功能中的应用
821

被折叠的 条评论
为什么被折叠?



