• 桥接模式


    1、简介

    使抽象和实现进行解耦,使得二者可以独立变化。通过抽象化和实现化之间的桥接结构实现解耦。


    核心代码: 抽象类依赖实现类

    一个简单的例子就是轮渡,轮渡公司可以过江,你也要过江,但你又不会游泳,这时就需要有个具体干事的东西,让轮渡公司去选择,你是要乘快艇、小船、还是游艇过江。

    这里的游艇就相当于一个桥梁,抽象类和实现类都通过游艇进行关联,由游客选择游艇类型、选择游艇级别和价位。然后游艇由父类游艇管理,游客仅供使用[调用].

    2、实现

    /**
     * 轮船公司接口
     * @author Administrator
     */
    public abstract class ShippingCompany {
    	
    	protected Shipping shipping;
    	
    	public ShippingCompany(Shipping shipping) {
    		this.shipping = shipping;
    	}
    	
    	public abstract void travel();
    }
    
    /**
     * 轮船接口
     * @author Administrator
     */
    public interface Shipping {
    
    	public void travelRiver(int level, double money);
    }
    
    /**
     * 邮轮类
     * @author Administrator
     */
    public class Cruise implements Shipping{
    
    	@Override
    	public void travelRiver(int level, double money) {
    		System.out.println();
    		System.out.println(String.format("I'm Cruise level: %d, cost: %f", level, money));
    	}
    }
    
    /**
     * 游艇类
     * @author Administrator
     */
    public class SpeedBoat implements Shipping{
    	
    	@Override
    	public void travelRiver(int level, double money) {
    		System.out.println(String.format("I'm SpeedBoat level: %d, cost: %f", level, money));
    	}
    }
    
    /**
    *游客类
    */
    public class MrLiu extends ShippingCompany{
    	
    	private int level;
    	private double money;
    	
    	public MrLiu(int level, double money, Shipping shipping) {
    		super(shipping);
    		this.level = level;
    		this.money = money;
    	}
    	
    	
    	@Override
    	public void travel() {
    		shipping.travelRiver(level, money);
    	}
    }
    
    // Test
    int level = 3;
    double money = 88888888;
    Shipping cruise = new Cruise();
    MrLiu liu1 = new MrLiu(level, money, cruise);
    Shipping speedBoat = new SpeedBoat();
    MrLiu liu2 = new MrLiu(level, money, speedBoat);
    liu1.travel();
    liu2.travel();
    
  • 相关阅读:
    如何使用Junit
    CSS简单动画效果
    编程类软件下载地址
    常用的工具包-下载地址
    连接数据库常用工具类(二)------C3P0Utils工具类
    连接数据库时常用的工具类(一)-------C3P0XmlUtils
    浏览器输入服务器端口号来访问html网页
    使用C/S结构实现客户端上传本地文件到服务器
    冒泡排序
    一个注册界面
  • 原文地址:https://www.cnblogs.com/kungFuPander/p/13474575.html
Copyright © 2020-2023  润新知