设计模式之Bridge
来源:互联网 发布:乐乐体育淘宝 编辑:程序博客网 时间:2024/06/05 10:03
Bridge设计模式是一个非常有用的设计模式,也是比较复杂的设计模式,比较符合java中面向接口编程的思想,Bridge设计模式的主要作用就是将抽象和实现部分实现解耦。
为什么叫桥接模式,我的理解就是将抽象这部分放置到桥的一头,将实现部分放置到桥的另一头,任何一头发生什么改变,都不会影响另一边,其实在JDBC中就是采用了Bridge的思想,jdbc是sun公司定义的一套接口,不同的数据库公司分别对这套接口进行实现,这样就方便了用户的使用,如果不这样设计,那么使用不用的数据库就得编写不同的连接代码。
大家还记得Class.forName("com.mysql.jdbc.Driver"),这里的Driver就是实现部分的一个类,DriverManage就是抽象这边的类,两边发生关系就是通过这句代码实现
现在来举个例子来说明Bridge的使用,虽然可能有些不太贴切,但是比较好理解:
假设我现在成立了一家“山寨股份有限公司”,生产的产品就是当前市场非常赚钱的东西,现在假设Ipad非常容易赚钱,那么我就山寨Ipad,过段时间发现Iphone比较火,我就去山寨IPhone,那么我如何方便的切换生产过程:
下面使用代码来完成这一过程
定义一个定义抽象类Company:
public abstract class Company{//公司要生产的产品private Product product;public Product getProduct(){return product;}public void setProduct(Product product){this.product = product;}public Company(Product product){this.product=product;}public void produceProduct(){product.produceProduct();}public void sellProduct(){product.sellProduct();}}
定义另一个抽象类,Product:
public abstract class Product{//生成某一产品public abstract void produceProduct();//销售产品public abstract void sellProduct();}
好,到现在我就开始创建我的山寨公司ShangZaiCompany
public class ShangZaiCompany extends Company{public ShangZaiCompany(Product product){super(product);// TODO Auto-generated constructor stub}@Overridepublic void produceProduct(){// TODO Auto-generated method stubsuper.produceProduct();}@Overridepublic void sellProduct(){// TODO Auto-generated method stubsuper.sellProduct();}}
创建Ipad产品:
public class IPad extends Product{@Overridepublic void produceProduct(){// TODO Auto-generated method stubSystem.out.println("生成IPad");}@Overridepublic void sellProduct(){// TODO Auto-generated method stubSystem.out.println("销售IPad");}}
创建IPhone产品
public class Phone extends Product{@Overridepublic void produceProduct(){// TODO Auto-generated method stubSystem.out.println("Phone生产中");}@Overridepublic void sellProduct(){// TODO Auto-generated method stubSystem.out.println("Phone销售中");}}
测试一下:
public class Client{public static void main(String[] args){//现在山寨公司要生产IPadIPad pad=new IPad();ShangZaiCompany com=new ShangZaiCompany(pad);//公司开始运转了com.produceProduct();com.sellProduct();//过段时间效益不太好,想生产手机Phone phone=new Phone();com.setProduct(phone);//公司开始运转com.produceProduct();com.sellProduct();}}
在上面的几个类中,其中Company,ShangZaiCompany,属于抽象这边的,Product,IPad,Phone属于实现这边的
- 设计模式之Bridge
- 设计模式之Bridge
- 设计模式之Bridge
- 设计模式之Bridge
- 设计模式之Bridge
- 设计模式之Bridge
- 设计模式之Bridge
- 设计模式之--Bridge
- 设计模式之Bridge
- 设计模式之Bridge
- 设计模式之Bridge
- 设计模式之-----Bridge
- 设计模式之 bridge
- 设计模式之Bridge
- 设计模式之Bridge
- 设计模式之Bridge
- 设计模式之Bridge
- 设计模式之Bridge
- jquery delegate() 方法为指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数
- oracle 查询效率问题
- DB2成功启动后,大约10分钟后自动停止,磁盘空间一直不足
- ext4 介绍
- [Android]构建boot.img(二):kernel的拷贝与打包
- 设计模式之Bridge
- Oracle出现ora-01045的解决方法
- 管理是门艺术
- Gtk2-perl编程:控件编程
- [Android]构建boot.img(三):boot.img的生成与结构
- SQL SERVER多个版本共存的问题
- shell 操作任务计划
- .ioctl的实现
- POJ1236【tarjan】