`
liyf155
  • 浏览: 127982 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Java桥接模式(Bridge)

 
阅读更多

概念性的东西就不说了,毕竟自己理解还不够透彻,所以前面一段直接删了。

 

简单的设计图:

 

 

代码的实现:

 

package bridge;

public abstract class Clothing {
	/**
	 * 抽象方法
	 * @param person
	 */
	public abstract void dressCloth(Person person);
}

 

package bridge;

public class Jacket extends Clothing {

	@Override
	public void dressCloth(Person person) {
		// TODO Auto-generated method stub
		System.out.println(person.getType() + "穿上马甲!");
	}

}

 

package bridge;

public class Trouser extends Clothing {

	@Override
	public void dressCloth(Person person) {
		// TODO Auto-generated method stub
		System.out.println(person.getType() + "穿上裤子!");
	}

}

 

package bridge;

public abstract class Person {
	private String type;
	private Clothing clothing;

	public String getType() {
		return type;
	}

	public void setType(String type) {
		this.type = type;
	}

	public Clothing getClothing() {
		return clothing;
	}

	public void setClothing(Clothing clothing) {
		this.clothing = clothing;
	}
	
	//抽象方法
	public abstract void dress();
}

 

package bridge;

public class Man extends Person {

	public Man()
	{
		setType("男人");
	}
	
	@Override
	public void dress() {
		getClothing().dressCloth(this);
	}

}

 

package bridge;

public class Woman extends Person {

	public Woman()
	{
		setType("女人");
	}
	
	@Override
	public void dress() {
		getClothing().dressCloth(this);
	}

}

 

package bridge;

public class ClientTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		//两类人
		Person man = new Man();        
        Person lady = new Woman();
        //两种衣服的类
        Clothing jacket = new Jacket();        
        Clothing trouser = new Trouser();

        jacket.dressCloth(man);
        trouser.dressCloth(man);
        jacket.dressCloth(lady);
        trouser.dressCloth(lady);
	}

}

 

  • 大小: 33.9 KB
1
4
分享到:
评论
8 楼 liyf155 2011-10-12  
Wind_ZhongGang 写道
有这么通俗易懂的例子,在讲解的时候就应该按照这个例子来讲清你的意思,而不是抽象笼统的说一些东西,不能理解楼主的意思。


说得好,写文章就应该这样,我知道错了。
7 楼 Wind_ZhongGang 2011-10-12  
有这么通俗易懂的例子,在讲解的时候就应该按照这个例子来讲清你的意思,而不是抽象笼统的说一些东西,不能理解楼主的意思。
6 楼 Wind_ZhongGang 2011-10-12  
Man 里的public void dress() { 
        // TODO Auto-generated method stub 
        Clothing clothing = getClothing(); 
        clothing.dressCloth(this); 
    } 

Woman 里的public void dress() { 
        // TODO Auto-generated method stub 
        Clothing clothing = getClothing(); 
        clothing.dressCloth(this); 
    } 

既然这两个方法实现一模一样,为什么不提到Person里面去呢,具体穿的是什么,也是在你构造Person的时候实现的。还有你怎么也应该写个测试方法嘛。
5 楼 liyf155 2011-10-12  
liyf155 写道
Mybeautiful 写道
更正, Person跟Clothing的关系中箭头画反了。

说对了,不好意思,更正!

本人初学设计模式,理解得还不够透彻,这只是我的学习笔记。


已经更改过来的了,多谢指导!
4 楼 liyf155 2011-10-12  
Mybeautiful 写道
更正, Person跟Clothing的关系中箭头画反了。

说对了,不好意思,更正!

本人初学设计模式,理解得还不够透彻,这只是我的学习笔记。
3 楼 Mybeautiful 2011-10-12  
更正, Person跟Clothing的关系中箭头画反了。
2 楼 Mybeautiful 2011-10-12  
楼主的画的没有问题。
Bridge说白了,就是继承加组合. 组合进来的可能是一个接口也可能是个抽象类。
概念怎么就搞的这么拗口。
1 楼 juda 2011-10-12  
说得太不清楚了

相关推荐

    桥接模式和策略模式的区别,内含可运行代码和两者详细区别

    首先,桥接模式(Bridge Pattern)的核心思想是“分离抽象与实现”。它通过建立一个抽象层和一个实现层的独立继承体系,使得抽象部分和实现部分可以独立变化,形成一种解耦的设计。在桥接模式中,抽象类引用实现类的...

    Bridge 桥接模式(结构型模式)

    4. 代码实现,展示如何在编程语言中实现桥接模式,可能包括Java、C#或Python等。 5. 桥接模式与其他设计模式的对比,如装饰器模式、适配器模式等。 6. 桥接模式的优缺点分析,以及在实际项目中的应用示例。 7. 如何...

    设计模式之桥接模式

    桥接模式(Bridge Pattern)是设计模式中结构型模式的一种,它的主要目的是将抽象部分与实现部分解耦,使得它们可以独立地进行变化。在Java编程中,这种模式的应用可以帮助我们构建更加灵活、可扩展的代码结构。 ...

    桥接模式java示例代码

    在刘伟老师的《设计模式》一书中,`Chapter 11 Bridge`章节的示例代码会进一步展示如何在实际场景中应用桥接模式,通过实例帮助读者理解和掌握这种模式的精髓。通过阅读和实践这些代码,你可以更好地理解桥接模式...

    java设计模式之桥接模式(Bridge)

    桥接模式(Bridge)是一种结构型设计模式,旨在将抽象部分与其实现部分分离,使得它们可以独立地进行变化。在Java编程中,桥接模式可以帮助我们处理多维度的变化,避免过度使用继承导致的类爆炸问题。 在桥接模式中...

    桥接(bridge)模式

    文件列表中的".classpath"和".project"是Java Eclipse项目的配置文件,它们描述了项目依赖和构建路径,这与桥接模式的意图相似,即通过配置文件连接不同的组件(库、插件等)。"closure.html", "inherit.html", ...

    java常用设计模式-桥接模式

    桥接模式(Bridge Pattern)是一种常用的设计模式,它将抽象化和实现化解耦,使用封装、聚合以及继承等基本技术,将两个独立变化的维度通过抽象化的方式进行桥接,从而降低了它们之间的耦合度,使得系统更加灵活。...

    设计模式之桥接模式,内含可运行代码

    在桥接模式中,抽象类(Abstraction)不直接引用具体实现(Implementation),而是通过一个桥接类(Bridge)来引用,这样抽象部分与实现部分可以独立变化,提供了更大的灵活性。 首先,我们来看一下桥接模式的基本...

    桥接模式(Bridge Pattern)原理图

    桥接模式是一种结构型设计模式,它的目的是将抽象化与实现化解耦,使得它们可以独立变化。这种模式主要用于处理当一个类存在两个或多个独立的变化的维度时的情况,例如,当一个类的抽象部分和实现部分可能发生变化,...

    桥接模式代码示例

    桥接模式是一种设计模式,属于结构型模式,其主要目的是将抽象部分与实现部分分离,使得它们可以独立地进行变化。这种模式通过引入一个抽象化角色来实现抽象和实现的解耦,允许它们独立地扩展。在桥接模式中,抽象...

    Java设计模式之桥接模式

    桥接模式(Bridge Pattern),将抽象部分与它的实现部分分离,使它们都可以独立地变化。更容易理解的表述是:实现系统可从多种维度分类,桥接模式将各维度抽象出来,各维度独立变化,之后可通过聚合,将各维度组合...

    java桥接模式

    ### Java桥接模式详解 #### 一、桥接模式简介 桥接模式(Bridge Pattern)是一种结构型设计模式,它的核心思想是将抽象与其实现分离,使它们都可以独立变化。这种模式允许用户在不影响其他部分的情况下改变某些...

    设计模式之桥接模式.pdf

    桥接模式(Bridge Pattern)是一种常用的结构型设计模式,它主要用于解决抽象部分和实现部分的耦合问题。这种模式通过将抽象和实现分离,使得两者可以独立变化。这种设计方式不仅提高了系统的可扩展性,还简化了系统...

    Java桥接模式实例详解【简单版与升级版】

    总结,Java桥接模式通过抽象部分与实现部分的解耦,提供了更高的灵活性和可扩展性。在上述实例中,`Meal` 类作为抽象部分,`MealImp` 接口及其实现类作为实现部分,共同构建了一个允许动态组合不同餐饮文化的框架。...

    设计模式11桥接模式

    桥接模式(Bridge Pattern)是一种用于将抽象部分与其实现部分分离的设计模式,这样两者就可以独立变化。该模式属于对象结构型模式,有时也被称为柄体(Handle and Body)模式或接口(Interface)模式。 **英文定义...

    设计模式实例,包括桥接模式、命令模式。

    **桥接模式(Bridge Pattern)** 桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立地进行变化。在Java中,桥接模式通常用来解耦抽象接口和其实现,使得两者可以独立演化。例如,假设我们...

    适配器模式&桥接模式

    #### 桥接模式(Bridge Pattern) 桥接模式是一种结构型设计模式,用于将抽象部分与它的实现部分分离,使得两者可以独立变化。这种类型的设计模式属于对象结构型模式,它让实现细节可以独立于算法逻辑。 ##### ...

    Java设计模式之桥接模式实例详解

    Java设计模式之桥接模式实例详解 桥接模式(Bridge Pattern)是一种结构型设计模式,它将抽象部分与它的实现部分分离,使它们都可以独立地变化。这种模式将继承关系转换为关联关系,从而降低了类与类之间的耦合,...

    《java设计模式》课后习题模拟试题解答——刘伟.zip

    2. **结构型模式**:如适配器(Adapter)、装饰器(Decorator)、代理(Proxy)、桥接(Bridge)、组合(Composite)、外观(Facade)和享元(Flyweight)。这些模式处理对象的组合和关系,提供更好的结构和接口,...

    java与模式光盘源码

    桥接模式(Bridge)将抽象部分与其实现部分分离,使它们可以独立变化,提供更大的灵活性。这些模式的组合使用可以帮助开发者构建更复杂、更健壮的系统。 在实际项目中,设计模式的应用可以提高代码的可读性、可维护...

Global site tag (gtag.js) - Google Analytics