结构模式-桥梁模式

桥梁模式:对象的结构模式,又称为柄体(Handle and Body)模式或者接口模式.

我们来看看jdon上关于它的解释

将抽象和行为划分开来,各自独立,但能动态的结合。

任何事物对象都有抽象和行为之分,例如人,人是一种抽象,人分男人和女人等;人有行为,行为也有各种具体表现,所以,“人”与“人的行为”两个概念也反映了抽象和行为之分。

在面向对象设计的基本概念中,对象这个概念实际是由属性和行为两个部分组成的,属性我们可以认为是一种静止的,是一种抽象,一般情况下,行为是包含在一个对象中,但是,在有的情况下,我们需要将这些行为也进行归类,形成一个总的行为接口,这就是桥模式的用处。

 

抽象化角色:

 

package com.javapatterns.bridge;

abstract public class Abstraction
{
    public void operation()
    {
    	imp.operationImp();
    }

    private Implementor imp;

	public Implementor getImp() {
		return imp;
	}

	public void setImp(Implementor imp) {
		this.imp = imp;
	}
    
}

 

 

修正抽象化角色A:

package com.javapatterns.bridge;

public class RefinedAbstractionA extends Abstraction
{
    public void operation()
    {
    	System.out.println("抽象的属性A:如大杯");
     	super.operation();
    }
}

 

修正抽象化角色B:

package com.javapatterns.bridge;

public class RefinedAbstractionB extends Abstraction
{
    public void operation()
    {
    	System.out.println("抽象的属性A:如小杯");
     	super.operation();
    }
}

 

 

实现化角色:

 

package com.javapatterns.bridge;

abstract public class Implementor
{
    public abstract void operationImp();
}

 

 

具体是实现化角色1:

 

package com.javapatterns.bridge;

public class ConcreteImplementorA extends Implementor
{
    public void operationImp()
    {
        System.out.println("Do something A...");
    }
}

 

 

具体实现化角色2:

 

package com.javapatterns.bridge;

public class ConcreteImplementorB extends Implementor
{
    public void operationImp()
    {
        System.out.println("Do something B...");
    }
}

 

客户端:

package com.javapatterns.bridge;

public class Client {

	public static void main(String[] args) {
		Abstraction ra = new RefinedAbstractionA();
		//可以任意组合
		Implementor conA = new ConcreteImplementorA();
		ra.setImp(conA);
		ra.operation();
		
		ra = new RefinedAbstractionB();
		Implementor conB = new ConcreteImplementorB();
		ra.setImp(conB);
		ra.operation();
	}
}

 

 

 

注意:修正抽象化角色可以是多个的,从而可以形成和具体实现化相互组合的情况。

你可能感兴趣的:(设计模式)