• 设计模式--桥接模式


    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();  
        }
    
    }

    运行结果:

      水放入

      大杯子

    ------------
    牛奶放入
    小杯子
    ------------
    水放入
    小杯子
    ------------
    牛奶放入大杯子
  • 相关阅读:
    SQL Server中行列转换 Pivot UnPivot
    div层拖动
    INamingContainer 接口
    nhibernet并发出错
    百度空间的密码帐号
    委托与事件入门经典
    Left Join、Right Join、Inner Join的区别
    C#操作剪贴板
    hibernate源码分析 持久化原理[摘自JavaEye]
    SQLSERVER条件语句IF应用
  • 原文地址:https://www.cnblogs.com/androidsuperman/p/4440100.html
Copyright © 2020-2023  润新知