`
liyf155
  • 浏览: 125810 次
  • 性别: 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  
说得太不清楚了

相关推荐

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

    主要为大家详细介绍了java设计模式之桥接模式Bridge,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    桥接模式(Bridge Pattern)原理图

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

    Java设计模式之桥接模式

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

    桥接模式代码示例

    桥接模式的示例代码和文档,学习桥接模式的参考资料。

    [Java设计模式(第2版)(Design.Patterns.in.Java).John.Metsker

    第6章 桥接(bridge)模式 52 第7章 职责型模式介绍 62 第8章 单例(singleton)模式 67 第9章 观察者(observer)模式 72 第10章 调停者(mediator)模式 85 第11章 代理(proxy)模式 97 第12章 职责链(chain of ...

    java设计模式教程+源代码

    Bridge ( 桥接模式 ) Composite ( 组合模式 ) Decorator ( 装饰模式 ) Facade ( 外观模式 ) Flyweight ( 享元模式 ) Proxy ( 代理模式 ) Chain of Responsibility ( 责任链模式 ) Command ( 命令模式 ) ...

    33种JAVA设计模式DEMO

    桥接模式(Bridge Pattern) 过滤器模式(Filter、Criteria Pattern) 组合模式(Composite Pattern) 装饰器模式(Decorator Pattern) 外观模式(Facade Pattern) 享元模式(Flyweight Pattern) 代理模式(Proxy...

    JAVA设计模式-day2.pdf

    JAVA设计模式-day2,请的行业大能讲得课程,涉及:创建模式(5种: 1、 工厂... 10、 桥接模式(Bridge); 11、 组合模式(Composite))、关系模式(11种),挺不错的,或许对某些专业技术人事有帮组,推荐给大家。

    Java面试 java设计模式整理 单例、工厂、策略等 面试使用,学习使用

    10.桥接模式(Bridge) 7 11.组合模式(Composite) 8 12.享元模式(Flyweight) 9 13.模板模式 9 13、策略模式(strategy) 12 14、模板方法模式(Template Method) 13 15、观察者模式(Observer) 14 16、迭代子...

    用Java实现23种设计模式

    桥接模式(Bridge Pattern) 过滤器模式(Filter、Criteria Pattern) 组合模式(Composite Pattern) 装饰器模式(Decorator Pattern) 外观模式(Facade Pattern) 享元模式(Flyweight Pattern) 代理模式...

    Java设计模式,并加上个人理解

    1. 设计模式 1.1 含义 1.2 作用 1.3 设计原则 1.4 分类 2. 简单工厂模式 (SimpleFactoryPattern) 3. 工厂方法模式 (Factory Method) ...16. 桥接模式 (Bridge Pattern) 17. 观察者模式 (Observer Pattern)

    23种java版设计模式源码案例.zip

    桥接模式(bridge) 组合模式(composite) 装饰器模式(decorate) 外观模式(facecade) 享元模式(flyweight) 代理模式(proxy) 行为型模式(behaviour) 责任链模式(chainrespon) 命令模式(commond) 解释器模式(interpreter...

    Bridge(桥接)Java实现,源码

    该应用采用Java语言, 实现了用于解决类爆炸的Bridge模式 该代码是为一个游戏设置的一部分主体类 本游戏涉及到的人物有:武士,法师,英雄 本游戏设计到的装备: 普通披风,防水披风 该部分将具体实现简化后,供研究...

    Java的23种设计模式

    工厂模式, 工厂方法模式,单例模式, 外观(Facade)模式, 观察者(Observer)模式,桥接(Bridge)模式都是比较常用的,不同的项目有不同的设计方向.....

    java版本二十三种设计模式.zip

    - 桥接模式(Bridge) - 组合模式(Composite) - 外观模式(Facade) - 享元模式(Flyweight) - 观察者模式(Observer) - 模板方法模式(Template Method) - 策略模式(Strategy) - 责任链模式(Chain of ...

    java常用设计模式

    工厂模式, 工厂方法模式,单例模式, 外观(Facade)模式, 观察者(Observer)模式,桥接(Bridge)模式都是比较常用的,不同的项目有不同的设计方向,可以参考的设计模式也不尽相同,没有定数,只是上面这几个...

    软件开发中的23种设计模式

    23种模式(Pattern) 1、创建形模式: 1)、单用型:Singleton ...2)、桥接模式:Bridge 3)、门面模式:Facade 4)、装饰模式:Decorator 3、行为型模式 1)、策略模式:Strategy 2)、观察者模式:Observer

    java设计模式源码-DesignPattern:设计模式(Java实现源码)

    桥接模式(bridgePattern) 过滤器模式(filterPattern) 组合模式(compositePattern) 装饰器模式(decoratorPattern) 外观模式(facadePattern) 享元模式(flyweightPattern) 代理模式(proxyPattern) 责任链模式...

    leetcode18java-StudyDayUp:基于java数据结构、算法、leetcode题目讲解,23种设计模式全面复习

    桥接模式Bridge模式 10. 装饰模式 11. 外观模式 Facade模式 12. 享元模式 13. 组合模式 14. 行为型模式 15. 模板方法模式 16. 策略模式 17. 命令模式 18. 责任链模式 19. 状态模式 20. 观察者模式 Observer模式 21. ...

    23种设计模式.doc

    工厂模式, 工厂方法模式,单例模式, 外观(Facade)模式, 观察者(Observer)模式,桥接(Bridge)

Global site tag (gtag.js) - Google Analytics