zoukankan      html  css  js  c++  java
  • 设计模式之结构型--桥接模式

    桥接模式


    场景

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

    可以用继承
    问题

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

    桥接模式核心要点:

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

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

     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 }
  • 相关阅读:
    python 上传下载文件
    post方式加载iframe
    js 实现打印功能
    python 判断数据类型
    web样式无法正常显示
    C# 调用python
    PDF转换成Txt
    js预览PDF的插件(亲测支持IE9,火狐,等等)
    文件下载
    asp.net网站发布到服务器GET的技能
  • 原文地址:https://www.cnblogs.com/lrxvx/p/9482727.html
Copyright © 2011-2022 走看看