桥接模式
场景
-商城系统中常见的商品分类,以电脑为类,如何良好的处理商品
分类销售的问题
可以用继承
问题
扩展性问题(类个数膨胀问题)
违反单一职责原则
桥接模式核心要点:
处理多层继承结构,处理多维度变化的场景,
将各个维度设计成独立的继承结构,使各个
维度可以独立的扩展在抽象层建立关联
这个桥梁可以是将一个维度的对象作为另一个维度的成员变量,
这样就可以让两个维度的对象互补影响,却可以调用
如:
1 package com.luruixiao.pattern.bridge; 2 3 public class Computer { 4 protected Brand brand; 5 public Computer() { 6 7 } 8 public Computer(Brand b) { 9 this.brand = b; 10 } 11 public void sales() { 12 brand.sales(); 13 } 14 } 15 class Desktop extends Computer{ 16 public Desktop() { 17 } 18 public Desktop(Brand b) { 19 super(b); 20 } 21 @Override 22 public void sales() { 23 super.sales(); 24 System.out.println("销售台式机"); 25 } 26 } 27 class Laptop extends Computer{ 28 public Laptop() { 29 } 30 public Laptop(Brand b) { 31 super(b); 32 } 33 @Override 34 public void sales() { 35 super.sales(); 36 System.out.println("销售笔记本"); 37 } 38 } 39 40 41 package com.luruixiao.pattern.bridge; 42 43 public interface Brand { 44 void sales(); 45 } 46 class lenovo implements Brand{ 47 48 @Override 49 public void sales() { 50 System.out.println("销售联想电脑"); 51 } 52 53 } 54 class Dell implements Brand{ 55 56 @Override 57 public void sales() { 58 System.out.println("销售戴尔电脑"); 59 } 60 61 } 62 63 package com.luruixiao.pattern.bridge; 64 65 public class Test { 66 public static void main(String[] args) { 67 Computer c = new Desktop(new lenovo()); 68 c.sales(); 69 Computer c2 = new Laptop(new Dell()); 70 c2.sales(); 71 } 72 }