设计模式之结构型--桥接模式

桥接模式


场景

-商城系统中常见的商品分类,以电脑为类,如何良好的处理商品
分类销售的问题

可以用继承
问题

扩展性问题(类个数膨胀问题)
违反单一职责原则

桥接模式核心要点:

处理多层继承结构,处理多维度变化的场景,
将各个维度设计成独立的继承结构,使各个
维度可以独立的扩展在抽象层建立关联

这个桥梁可以是将一个维度的对象作为另一个维度的成员变量,
这样就可以让两个维度的对象互补影响,却可以调用
如:

 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 }
原文地址:https://www.cnblogs.com/lrxvx/p/9482727.html