学习笔记-轻量级Java EE:模式--桥接模式
来源:互联网 发布:狄克斯特拉算法举例 编辑:程序博客网 时间:2024/06/05 04:38
桥接模式是一种结构型模式,主要应对的是:由于实际的需要,某个类具有俩个或俩个以上维度的变化,如果只是使用继承将无法实现这种需求,或者使得设计变得相当臃肿。
举例来说
1.假设现在我们需要为某个餐厅制造菜单,餐厅供应牛肉面、猪肉面,又有口味是否添加辣椒(无辣、微辣等等),假如后面还要添加新的风格呢?如果使用继承方式,每种都需要实现不同的子类;此时可以采用桥接模式,将变化的部分抽象出来,使变化部分与主类分离,最后提供一个管理类来组合不同维度上的变化,通过这种组合来满足业务的需求。
2.假设在一块画布上,要画一个正方形或菱形或一个图片等,或者要拖动或选择,假如某一天又需要添加在这俩个维度上的动作,也可以采用桥接模式来满足该需求。
实例代码:
1.提供一个辣椒风格的接口:
public interface Peppery{String style();}然后实现俩种辣椒风格:
public class PepperySytle implements Peppery{//实现"辣味"风格的方法public String style(){return "辣味很重,很过瘾...";}}
public class PlainStyle implements Peppery{//实现"不辣"风格的方法public String style(){return "味道清淡,很养胃...";}}2.提供一个面条的抽象类:
public abstract class AbstractNoodle{//组合一个Peppery变量,用于将该维度的变化独立出来protected Peppery style;//每份Noodle必须组合一个Peppery对象public AbstractNoodle(Peppery style){this.style = style;}public abstract void eat();}然后实现俩种不同的面:
public class PorkyNoodle extends AbstractNoodle{public PorkyNoodle(Peppery style){super(style);}//实现eat()抽象方法public void eat(){System.out.println("这是一碗稍嫌油腻的猪肉面条。"+ super.style.style());}}
public class BeefNoodle extends AbstractNoodle{public BeefNoodle(Peppery style){super(style);}//实现eat()抽象方法public void eat(){System.out.println("这是一碗美味的牛肉面条。"+ super.style.style());}}测试类:
public class Test{public static void main(String[] args) {//下面将得到“辣味”的牛肉面AbstractNoodle noodle1 = new BeefNoodle(new PepperySytle());noodle1.eat();//下面将得到“不辣”的牛肉面AbstractNoodle noodle2 = new BeefNoodle(new PlainStyle());noodle2.eat();//下面将得到“辣味”的猪肉面AbstractNoodle noodle3 = new PorkyNoodle(new PepperySytle());noodle3.eat();//下面将得到“不辣”的猪肉面AbstractNoodle noodle4 = new PorkyNoodle(new PlainStyle());noodle4.eat();}}至此,通过不同的组合,可以实现不同风格的面条,而辣味接口,也可以使用到其他的菜系里,实现复用性;
0 0
- 学习笔记-轻量级Java EE:模式--桥接模式
- 学习笔记-轻量级Java EE:模式--单例模式
- 学习笔记-轻量级Java EE:模式--命令模式
- 学习笔记-轻量级Java EE:模式--策略模式
- 学习笔记-轻量级Java EE:模式--观察者模式
- 学习笔记-轻量级Java EE:模式--门面模式
- 学习笔记-轻量级Java EE:模式--简单工厂
- 学习笔记-轻量级Java EE:模式--工厂方法和抽象工厂
- 学习笔记-轻量级Java EE:JSP基本知识
- 学习笔记-轻量级Java EE:Servlet基础
- Java EE 设计模式学习笔记——会话管理
- Java EE 设计模式学习笔记——不佳实践
- 学习笔记-轻量级Java EE:Servlet之Filter
- 学习笔记-轻量级Java EE:Struts 2配置
- 学习笔记-轻量级Java EE:struts 2之Action
- 轻量级Java EE企业应用实战 学习笔记(一)第一章
- 《轻量级Java EE企业级应用实战》第二章学习笔记
- 学习笔记-轻量级Java EE:Java EE应用的分层模型
- Ubuntu下apache2配置SSL
- poj2318计算几何入门
- 视频处理技术
- [C++]C++小笔记 ----- 函数
- 基于XMPP的IOS聊天客户端程序(IOS端三)
- 学习笔记-轻量级Java EE:模式--桥接模式
- cocos2dx屏幕式配深度解析
- 2014年一月你好
- Android 企业需求与开发者状况简析(转)
- 数组的反射
- Unity游戏开发之----mac地址的获取
- 懒得都没有时间更新博客了
- HBase数据写入测试
- ORACLE查看用户定义的视图