- 浏览: 955414 次
- 性别:
- 来自: 魔都
文章分类
- 全部博客 (745)
- MultiThread (19)
- My Plan (118)
- JavaBasic (61)
- MyInterview (104)
- InternetTechnique (5)
- ProjectConclusion (1)
- Maven (5)
- MogoDb (5)
- Hadoop (11)
- Memcached (6)
- TechniqueCollect (1)
- Ibaits (1)
- Android (34)
- ItLife (40)
- Tree (2)
- ProjectArchitect (7)
- Open Source (3)
- liunx (5)
- socket (8)
- Spring (27)
- DesginPattern (35)
- WebBasic (13)
- English (13)
- structs (1)
- structs2 (2)
- Oracle (17)
- Hibernate (2)
- JavaScript (4)
- Jdbc (1)
- Jvm (15)
- Ibatis (1)
- DataStructures (13)
- Https/Socket/Tcp/Ip (3)
- Linux (4)
- Webservice (7)
- Io (2)
- Svn (1)
- Css (1)
- Ajax (1)
- ExtJs (1)
- UML (2)
- DataBase (6)
- BankTechnique (3)
- SpringMvc (3)
- Nio (3)
- Load Balancing/Cluster (3)
- Tools (1)
- javaPerformanceOptimization (8)
- Lucene(SEO) (1)
- My Think (80)
- NodeJs (1)
- Quartz (1)
- Distributed-java (1)
- MySql (7)
- Project (4)
- junit (4)
- framework (1)
- enCache (1)
- git (2)
- SCJP (1)
- sd (1)
最新评论
-
lkjxshi:
你都这水平了还考这个证干嘛
SCJP 认证考试指南 -
钟逸华:
问的真多
百度java开发面试题(转) -
zuimeitulip:
觉得我就是这样的,从小阅读量就很少,导致现在的读的速度非常慢, ...
让读书成为一种习惯 -
DDT_123456:
我觉得你是不符合要求。问你hashmap的那个问题,你那样回答 ...
阿里面试2(转) -
jingjing0907:
刚刚写了很多读过此博客的感受,竟然没有发上去,以为我注册账号还 ...
让读书成为一种习惯
文章链接:http://airu.iteye.com/blog/1464306
对于一个初学者来说,往往容易滥用类。一切皆类,所以,类在设计中便爆炸般增长了。
对于这类问题,我们有很多模式来解决,但是我认为根本的还是要搞清楚,什么时候可以创建一个新的类。Martin大叔的 重构,Kent大叔的TDD,都给我们提出了一些解决方法。
这里我们不讨论这么高深的问题,而是从GOF的设计模式入手,来看看,类是如何泛滥,又是如何通过桥接来解决的。这也正是面向对象中的关键之处。
桥接,顾名思义,在接口与实现之间,架设一座桥梁,这座桥,其实并非是为了过河,而是隔离接口与实现。这就是著名的OO原则:DIP,ISP,依赖倒置(细节依赖抽象,抽象不依赖细节,接口隔离)。下面看桥接的UML:
例子还是从形状说起。每个形状都要求能绘制自己。我们有很多形状,很多画法。
首先我们定义一个接口。shape
Java代码
public interface Shape {
public void draw();
}
于是,你接下来怎么做?各种实现,例如:
Java代码
public class Circle implements Shape{
private int x;
private int y;
private int r;
public Circle(int x, int y, int r){
this.x = x;
this.y = y;
this.r = r;
}
@Override
public void draw() {
// TODO Auto-generated method stub
//invoke the draw method
JFrame frame = new JFrame();
Graphics g = frame.getGraphics();
g.drawOval(x, y, r, r);
}
}
于是,需求又要画Rectangle了。我们继续写Rectangle,然后还要画Polygon,
这没什么问题,也就是类多一点,但是都是必须的。
继续,用户突然要我们画一个同心圆了。再编码完后,你可能发现,所有这些draw函数中,我们重复了太多的代码。不要紧,我们继续,这时候,客户举得应该有铅笔画的形状和钢笔画的形状,这下怎么办? 没有一种形状再加上绘图用的工具吧。现在是时候抽象了。
首先抽象出一个Drawing的接口,我们使用这个接口来作为绘图的抽象类。这样不需要每次都要实际的绘图。这里需要注意的是,我们如果直接使用draw来作为接口,那么这个粒度太大,因为实际中的绘制,可能会分成很多的步骤和细节,于是我们就在接口处,设置最小的粒度,这样,更能适应不同需求。
Java代码
public interface Drawing {
public void drawLine();
public void drawCircle();
}
这里简化为画直线和圆。
有了接口,我们就看看有些什么不同的实现吧。要绘制,我们先选用铅笔:
Java代码
public class PencilDraw implements Drawing{
@Override
public void drawLine() {
// TODO Auto-generated method stub
//This line is drawn by pencil
System.out.println("pencil is drawing a line...");
//do drawing
}
@Override
public void drawCircle() {
// TODO Auto-generated method stub
//This circle is drawn by pencil
System.out.println("pencil is drawing a circle...");
//do drawing
}
}
这里,做了很多简化。实际的绘制,可能使用原有系统,可能需要提供绘制参数等等。
最后,我们看看如何使用:
Java代码
public static void main(String args[]){
Drawing draw = new PencilDraw();
Shape rec = new Rectangle(draw);
rec.draw();
}
这样的好处是,对于已经存在的形状,他们并不需要关心谁来绘制他们,而是使用绘制接口。
也就是只针对接口,而不是具体的细节。
这就是桥接模式。使用一个接口,封装了具体的实现。这些实现在使用的时候可以灵活替换(LSP原则),更重要的是,当有新的需求时,我们只是使用新的实现替换一下老的实现,就可以了,而无需改变原来的形状的接口(OCP原则)。
发表评论
-
关于Java 23种设计模式的有趣见解
2013-08-10 18:01 1012关于Java 23种设计模式的有趣见解 [来源] 51CT ... -
Java中常用的设计模式(转)
2013-01-30 12:30 1112下面是我对一些常用设计模式的理解: 模式分为:行为模 ... -
工厂模式,抽象工厂模式,简单工厂的区别
2012-10-10 21:35 9511.抽象工厂模式与工厂方法模式的最大区别就在于,工 ... -
java设计模式之常用设计模式分析
2012-06-05 09:09 1273常用的设计模式有:工厂模式(工厂方法模式,简单工厂模式, ... -
java设计模式之责任链模式(行为模式 )
2012-06-04 14:31 1103(11).责任链模式: 文章链接:http:// ... -
java设计模式之观察着模式(行为模式)
2012-06-04 14:28 985(10).观察着模式Observer 文章链接:ht ... -
java设计模式之适配器模式(结构型模式)
2012-06-04 14:26 666(9).适配器模式 文章链接:http://chjl2 ... -
java设计模式之动态代理模式(结构型模式)
2012-06-04 14:24 1159(8).代理模式: 文章 ... -
java设计模式之代理模式(结构型模式)
2012-06-04 14:22 1047(8).代理模式: ... -
java设计模式之——装饰模式结(构型模式)
2012-06-03 19:34 998三.例子代码:使用装饰 ... -
java设计模式之缺省适配器模式(构型模式)
2012-06-03 19:31 1377缺省适配器模式:文章链接:http://jzinfo.itey ... -
java设计模式之模板方法模式(行为模式 )
2012-06-03 19:03 1119package com.createtype.desginpa ... -
java设计模式之——组合模式(结构型模式 )
2012-06-03 18:24 1341接口的作用是什么?定 ... -
java设计模式之——策略模式(行为模式 )
2012-06-03 16:54 1061文章链接:http://yangguangfu ... -
java设计模式之简单工厂模式(创建型模式)
2012-06-01 00:01 1258/** * ## 具体产品(Con ... -
工厂模式,简单工厂模式,抽象工厂模式三者有什么区别
2012-05-31 23:59 1290文章链接: http://blog.csdn.net/ ... -
java设计模式之抽象工厂模式(创建型模式)
2012-05-31 23:57 1134package com.createtype.desgi ... -
java设计模式之工厂方法模式(创建型模式)
2012-05-31 23:56 948package com.createtype.desg ... -
java设计模式之单例模式(创建型模式)
2012-05-30 17:48 1057单列模式: 优点 ... -
java中设计模式分类
2012-05-01 18:31 1139常用的设计模式有:工厂模式(工厂方法模式,简单工厂模式, ...
相关推荐
C#面向对象设计模式 Bridge 桥接模式 视频讲座下载
桥接模式(Bridge Pattern)是一种结构型设计模式,它的主要目的是将抽象部分与实现部分分离,使得它们可以独立地进行变化。在软件工程中,这种分离有助于降低复杂性,提高代码的可维护性和可扩展性。桥接模式的核心...
桥接模式(Bridge Pattern)是面向对象设计中的一种结构型模式,它将抽象部分与实现部分分离,使得它们可以独立地进行变化。在C#编程中,桥接模式的应用能够帮助我们更好地解耦系统,提高代码的灵活性和可扩展性。 ...
桥接模式的核心思想是将抽象类(Abstraction)与实现类(Implementation)解耦,通过一个关联关系(即“桥”)使它们可以独立变化。这个关联关系通常是一个接口或抽象类,允许抽象类引用实现类的实例。 下面我们将...
首先,桥接模式(Bridge Pattern)的核心思想是“分离抽象与实现”。它通过建立一个抽象层和一个实现层的独立继承体系,使得抽象部分和实现部分可以独立变化,形成一种解耦的设计。在桥接模式中,抽象类引用实现类的...
桥接模式(Bridge Pattern)是设计模式中的一种结构型模式,它主要解决的是在软件设计中,当抽象和实现之间存在紧密耦合时,如何使这两者能够独立地变化。这种模式通过引入一个抽象层来分离接口和实现,使得它们可以...
桥接模式(Bridge Pattern)是一种结构型设计模式,它旨在将抽象部分与其实现部分分离,使得它们可以独立地进行变化。在C#编程中,这种模式尤其有用,因为随着软件系统的复杂性增加,类的继承层次可能会变得难以管理...
桥接模式是设计模式中的一种结构型模式,它旨在将抽象部分与实现部分解耦,使得它们可以独立地变化。这种模式将抽象类和它的实现类进行分离,通过一个抽象接口来连接它们,使得两者可以独立发展,增加了系统的灵活性...
在桥接模式中,抽象类(Abstraction)不直接引用具体实现(Implementation),而是通过一个桥接类(Bridge)来引用,这样抽象部分与实现部分可以独立变化,提供了更大的灵活性。 首先,我们来看一下桥接模式的基本...
在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均不需要资源... 这是第8节:结构型模式Bridge桥接模式
桥接模式是设计模式中的一种结构型模式,其主要目的是为了分离抽象部分和实现部分,以便两者能够独立地进行变化。这种模式的核心理念是通过引入一个抽象层来封装多种可能的实现,使得抽象和实现之间形成一种“桥接”...
该应用采用Java语言, 实现了用于解决类爆炸的Bridge模式 该代码是为一个游戏设置的一部分主体类 本游戏涉及到的人物有:武士,法师,英雄 本游戏设计到的装备: 普通披风,防水披风 该部分将具体实现简化后,供研究...
桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立进行变化。这种模式在软件工程中被广泛应用于处理组件之间的耦合问题,特别是当需要为同一抽象提供多种实现或者需要独立地改变它们时。 ...
桥接模式(Bridge Pattern)是设计模式中结构型模式的一种,它的主要目的是将抽象部分与实现部分解耦,使得它们可以独立地进行变化。在Java编程中,这种模式的应用可以帮助我们构建更加灵活、可扩展的代码结构。 ...
创建型模式 (100%) 设计模式面面观(8):创建型模式总结 (100%) 设计模式面面观(9):适配器模式(Adapter Pattern)-结构型模式 (100%) 设计模式面面观(10):桥接模式(Bridge Pattern)-结构型模式 ...
桥接模式(Bridge Pattern)是一种结构型设计模式,它将抽象部分与实现部分分离,使得两者可以独立地变化。这种模式常用于需要在多个维度上变化的场景,比如不同的形状和颜色,允许在不改变客户端代码的情况下增加新...
"ADSL 桥接模式和路由模式的区别" 在 ADSL 宽带接入方式中,桥接模式和路由模式是两种常见的工作模式。_bridge 模式是 ADSL ROUTER 的默认工作模式,主要用于单台电脑的接入,需要代理服务器或网关设备将局域网中的...
本实验主要探讨了两种经典的设计模式:桥接模式(Bridge Pattern)和装饰模式(Decorator Pattern)。这两种模式都是面向对象设计中的重要工具,能帮助我们构建灵活且可扩展的代码。 **桥接模式**是一种结构型设计...