设计模式:适配器模式
来源:互联网 发布:壹方凌网络是干嘛的 编辑:程序博客网 时间:2024/06/08 10:44
适配器模式
适配器模式:将一个类的接口,转换成客户期望的另一个接口。适配器让原来接口不兼容的类可以合作无间。
示例:一个农场主,以前一直喂养家禽Poultry中的鸡chicken,后来他又喂养鸽子dove。
家禽接口:
package com.adapter;/** * ClassName: Poultry * @Description: 家禽类 * @author Panyk * @date 2016年3月9日 */public interface Poultry { //跑 public void run(); //喂养 public void feed();}
鸡类:
package com.adapter;public class Chicken implements Poultry { @Override public void run() { System.out.println("鸡跑过来吃食!"); } @Override public void feed() { System.out.println("在院子里喂鸡!"); }}
鸽子类:
package com.adapter;/** * ClassName: Dove * @Description:鸽子 * @author Panyk * @date 2016年3月9日 */public class Dove { public void fly(){ System.out.println("鸽子飞过来吃食!"); } public void feedOnGround(){ System.out.println("在人民广场喂鸽子!"); }}
鸽子适配器:
package com.adapter;/** * ClassName: DoveAdapter * @Description:鸽子适配器 * @author Panyk * @date 2016年3月9日 */public class DoveAdapter implements Poultry { private Dove dove; public DoveAdapter(Dove dove){ this.dove = dove; } @Override public void run() { dove.fly(); } @Override public void feed() { dove.feedOnGround(); }}
农场主类:
package com.adapter;import java.util.ArrayList;import java.util.List;/** * ClassName: Farmer * @Description:农场主 * @author Panyk * @date 2016年3月9日 */public class Farmer { public List<Poultry> poultrys = new ArrayList(); public void feed(){ for(Poultry p:poultrys){ p.feed(); p.run(); System.out.println("------------------------"); } } public static void main(String[] args) { Farmer f = new Farmer(); //农场主喂养鸡 Poultry chicken = new Chicken(); f.poultrys.add(chicken); //农场主喂鸽子 Dove dove = new Dove(); Poultry da = new DoveAdapter(dove); f.poultrys.add(da); f.feed(); }}
0 0
- 设计模式:适配器模式
- 设计模式------适配器模式
- 设计模式:适配器模式
- 设计模式---适配器模式
- 设计模式 适配器模式
- 设计模式 - 适配器模式
- 设计模式--适配器模式
- 设计模式-适配器模式
- 设计模式------适配器模式
- 设计模式---适配器模式
- 设计模式- 适配器模式
- 设计模式 - 适配器模式
- 设计模式:适配器模式
- 适配器模式--设计模式
- 设计模式 - 适配器模式
- 设计模式-适配器模式
- 设计模式---适配器模式
- 设计模式-适配器模式
- 获取页面Url地址栏后面的参数
- Spring AOP: proxy-target-class 值的意思
- Windows下Mysql错误ERROR 1045 (28000) ERROR 1054 (42S22)以及ERROR 1820 (HY000)的解决
- js开始时间、结束时间比较
- Android Studio使用教程(一)
- 设计模式:适配器模式
- Shell基础(二):Bash变量
- POJ 3991 Seinfeld
- js获取当前系统时间 && js获取当前系统时间-24小时 && 当前系统时间+24小时
- phpstorm中$_post无法传值的问题 与文件无法上传问题
- 137.View the Exhibits and examine PRODUCTS and SALES tables.
- opencl:cl::make_kernel的进化
- Pycharm中的中文文件名只能显示口口口口口口口口口的解决方法
- JDK常用的package