zoukankan      html  css  js  c++  java
  • 设计模式--桥接模式

    BRIDGE?早上碰到MM,要说早上好,晚上碰到MM,要说晚上好;碰到MM穿了件新衣服,要说你的衣服好漂亮哦,碰到MM新做的发型,要说你的头发好漂亮哦。不要问我“早上碰到MM新做了个发型怎么说”这种问题,自己用BRIDGE组合一下不就行了   桥梁模式:将抽象化与实现化脱耦,使得二者可以独立的变化,也就是说将他们之间的强关联变成弱关联,也就是指在一个软件系统的抽象化和实现化之间使用组合/聚合关系而不是继承关系,从而使两者可以独立的变化。  

    也就是说:将抽象和行为划分开来,各自独立,但能动态的结合.

    接下来以杯子和液体来举例:

    杯子有大杯子,也有小杯子;

    液体这里以牛奶和水举例:

    牛奶既可以放入大杯子,也可放入小杯子,水也一样。

    首先定义液体类:

    public abstract class Liquid {
        void fillwith(){};
    }

    然后定义杯子类:

    public abstract class Tazas {
        Liquid liquid;
        void fillWidth(){
    
        }
    }

    大杯子类:

    public class BigTazas extends Tazas{
        @Override
        void fillWidth() {
            super.fillWidth();
            liquid.fillwith();
            System.out.println("大杯子");
        }
    }

    小杯子类:

    public class SmallTazas extends Tazas{
        @Override
        void fillWidth() {
            super.fillWidth();
            liquid.fillwith();
            System.out.println("小杯子");
        }
    }

    牛奶类:

    public class Milk extends Liquid {
        @Override
        void fillwith() {
            // TODO Auto-generated method stub
    
            super.fillwith();
            System.out.println("牛奶放入");
        }
    }

    水类:

    public class Water extends Liquid {
        @Override
        void fillwith() {
            // TODO Auto-generated method stub
            super.fillwith();
            System.out.println("水放入");
        }
    }

    测试的类:

    public class Main {
    
        public static void main(String[] args) {
            Tazas tazas = new BigTazas();  
            tazas.liquid = new Water();  
            tazas.fillWidth();  
            System.out.println("------------");
            Tazas tazas1 = new SmallTazas();  
            tazas1.liquid = new Milk();  
            tazas1.fillWidth();  
            System.out.println("------------");
            Tazas tazas2 = new SmallTazas();  
            tazas2.liquid = new Water();  
            tazas2.fillWidth();  
            System.out.println("------------");
            Tazas tazas3 = new BigTazas();  
            tazas3.liquid = new Milk();  
            tazas3.fillWidth();  
        }
    
    }

    运行结果:

      水放入

      大杯子

    ------------
    牛奶放入
    小杯子
    ------------
    水放入
    小杯子
    ------------
    牛奶放入大杯子
  • 相关阅读:
    java
    java
    informix资料下载
    linux下vim更改注释颜色
    linux修改目录颜色
    Centos下将sh脚本变为可全局运行的方法
    CentOS7启动时自动加载内核模块
    lsmod,depmod,modprobe,modinfo,insmod,rmmod
    自旋锁与信号量
    软中断、tasklet和工作队列
  • 原文地址:https://www.cnblogs.com/androidsuperman/p/4440100.html
Copyright © 2011-2022 走看看