zoukankan      html  css  js  c++  java
  • 类模式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 部门做技术工作”。
    “没错”,地面上的人说到,“你是怎么知道的?”
    “呵呵”,热气球上的人说,“你告诉我的每件事在技术上都是对的,但对都没 有用”。
    地面上的人说,“你一定是管理层的人”。
    “没错”,热气球上的人说,“可是你是怎么知道的?”
    “呵呵”,地面上的那人说到,“你不知道你在哪里,你也不知道你要去哪,你 总希望我能帮你。你现在和我们刚见面时还在原来那个地方,但现在却是我 错了”。

  • 相关阅读:
    Ubuntu 开机启动是出现 grub rescue 解决办法
    OpenvSwitch Port Mirror in OpenStack Neutron
    Protobuf 在Ubuntu 14上的编译与使用
    Linux screen 常用命令
    OpenStack/devstack with Neutron on Ubuntu 14 (1)
    osprofiler在openstack Cinder里的使用
    基于SSH协议的端口转发
    HA 技术简介
    Socket Receive数据一次性接收不全的问题
    【转】本文对C#虚函数virtual进行详解。
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3032172.html
Copyright © 2011-2022 走看看