• 类模式Java设计模式之十五(桥接模式)类模式


    最近应用开发的过程中出现了一个小问题,顺便记录一下原因和方法--类模式

        一、什么是接桥模式

        Bridge 模式又叫做接桥模式,是构造型的计设模式之一。Bridge模式基于类的最小计设准则,通过应用封装,聚合以及继承等行为来让不同的类担承不同的任责。它的要主特点是把抽象(abstraction)与行为实现(implementation)离分开来,从而可以坚持各部分的独立性以及应答它们的能功展扩。

        

        二、接桥模式的结构

        

        

        三、接桥模式的角色和责职

        Client
        Bridge模式的应用者

        Abstraction
        抽象类口接(口接或抽象类)
        护维对行为实现(Implementor)的引用

        Refined Abstraction
        Abstraction子类

        Implementor
        行为实现类口接 (Abstraction口接定义了基于Implementor口接的更高次层的作操)

        ConcreteImplementor
        Implementor子类

        

        代码实现:

        Implementor类:

    package com.qianyan.bridge;
    
    public interface Engine {
    
    	/**
    	 * 安装动员引擎
    	 */
    	public void installEngine();
    }

        ConcreteImplementor类:

    package com.qianyan.bridge;
    
    public class Engine2000 implements Engine {
    
    	@Override
    	public void installEngine() {
    		System.out.println("安装2000CC动员引擎");
    	}
    
    }
    package com.qianyan.bridge;
    
    public class Engine2200 implements Engine {
    
    	@Override
    	public void installEngine() {
    		System.out.println("安装2200CC动员引擎");
    	}
    
    }

        Abstraction类:

    package com.qianyan.bridge;
    
    public abstract class Car {
    
    	private Engine engine;
    	
    	public Car(Engine engine) {
    		this.engine = engine;
    	}
    
    	public Engine getEngine() {
    		return engine;
    	}
    
    	public void setEngine(Engine engine) {
    		this.engine = engine;
    	}
    	
    	public abstract void installEngine();
    }

        Refined Abstraction类:

    package com.qianyan.bridge;
    
    public class Bus extends Car {
    
    	public Bus(Engine engine) {
    		super(engine);
    	}
    	
    	@Override
    	public void installEngine() {
    		System.out.print("Bus:");
    		this.getEngine().installEngine();
    	}
    
    }
    package com.qianyan.bridge;
    
    public class Jeep extends Car {
    
    	public Jeep(Engine engine) {
    		super(engine);
    	}
    	@Override
    	public void installEngine() {
    		System.out.print("Jeep:");
    		this.getEngine().installEngine();
    	}
    
    }

        Client类:

    package com.qianyan.bridge;
    
    public class MainClass {
    	public static void main(String[] args) {
    		Engine engine2000 = new Engine2000();
    		Engine engine2200 = new Engine2200();
    		
    		Car bus = new Bus(engine2000);
    		bus.installEngine();
    		
    		Car jeep = new Jeep(engine2200);
    		jeep.installEngine();
    	}
    }

        Result:

    Bus:安装2000CC动员引擎
    Jeep:安装2200CC动员引擎

    文章结束给大家分享下程序员的一些笑话语录: 问路
    有一个驾驶热气球的人发现他迷路了。他降低了飞行的高度,并认出了地面 上的一个人。他继续下降高度并对着那个人大叫,“打扰一下,你能告诉我我 在哪吗?”
    下面那个人说:“是的。你在热气球里啊,盘旋在 30 英尺的空中”。
    热气球上的人说:“你一定是在 IT 部门做技术工作”。
    “没错”,地面上的人说到,“你是怎么知道的?”
    “呵呵”,热气球上的人说,“你告诉我的每件事在技术上都是对的,但对都没 有用”。
    地面上的人说,“你一定是管理层的人”。
    “没错”,热气球上的人说,“可是你是怎么知道的?”
    “呵呵”,地面上的那人说到,“你不知道你在哪里,你也不知道你要去哪,你 总希望我能帮你。你现在和我们刚见面时还在原来那个地方,但现在却是我 错了”。

  • 相关阅读:
    trim标签:可以自定义字符串的截取规则
    登录框(用获取value值方法)
    C++在ARM Linux下的交叉编译
    happybase导入报错:thriftpy.parser.exc.ThriftParserError: ThriftPy does not support generating module with path in protocol 'c'
    Nginx报错总结
    ubuntu安装Nginx
    mqtt在debian strench 9 docker环境下的搭建
    evokly/kafka-connect-mqtt 不支持kafka集群部署
    树莓派mqtt安装
    kafka和mqtt的区别和联系
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3032172.html
Copyright © 2020-2023  润新知