首页 > 代码库 > 设计模式_桥梁模式
设计模式_桥梁模式
Bridge Pattern
Decouple an abstraction from its implementation so that the two can vary independently.(将抽象和实现解耦。使得倆者能够独立的变化)
样例
"天下熙熙,皆为利来。天下攘攘,皆为利往" 现实和结构分开
服装公司 ="服装"+"公司" ="服装公司"
解耦之前是服装公司。写一个Corp公司抽象类。然后即可了。解耦后,变成"服装"+"公司",服装抽象化为产品,而公司抽象为公司,倆者可独立变化,在抽象层面实现解耦。
产品抽象
public abstract class Product { public abstract void beProducted(); public abstract void beSelled(); }
公司抽象
public abstract class Corp { private Product product; public Corp(Product _product){ this.product=_product; } public void makeMoney(){ this.product.beProducted(); this.product.beSelled(); } }
房子也是产品不是吗?
public class House extends Product { @Override public void beProducted() { System.out.println("生产出的房子是这种..."); } @Override public void beSelled() { System.out.println("生产出的房子卖出去了...."); } }
public class IPod extends Product { @Override public void beProducted() { System.out.println("生产出的ipod是这种"); } @Override public void beSelled() { System.out.println("生产的IPod卖出去了"); } }
public class HouseCorp extends Corp { public HouseCorp(House _house) { super(_house); } @Override public void makeMoney() { super.makeMoney(); System.out.println("房地产公司赚大钱了"); } }
public class ShanZhaiCorp extends Corp { public ShanZhaiCorp(Product _product) { super(_product); } @Override public void makeMoney() { super.makeMoney(); System.out.println("我是山寨,我赚钱呀"); } }
场景測试
public static void main(String[] args) { System.out.println("房地产公司是这样执行的"); House house=new House(); HouseCorp houseCorp=new HouseCorp(house); houseCorp.makeMoney(); System.out.println(); System.out.println("山寨公司是这样执行的"); ShanZhaiCorp shanZhaiCorp=new ShanZhaiCorp(new IPod()); shanZhaiCorp.makeMoney(); }
瞧瞧人家山寨公司,什么东西流行就生产什么。反正价格低,质量嘛也有那么一点点保证。
长处
抽象和实现分离
扩充能力
注意事项
主要考虑怎样拆分抽象和实现
我是菜鸟,我在路上。
设计模式_桥梁模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。