Java 设计模式
来源:互联网 发布:首页源码 编辑:程序博客网 时间:2024/05/01 13:43
基本概念
桥接模式的动机:
- 由于实际的需要,某个类具有两个或两个以上的维度变化,如果只是用继承将无法实现这种需要,或者使得设计变得相当臃肿。
桥接模式的作用:
- 桥接模式的做法是把变化部分抽象出来,使变化部分与主类分离开来,从而将多个维度的变化彻底分离。最后,提供一个管理类来组合不同维度上的变化,通过这种组合来满足业务的需要。
桥接模式的角色:
Implementor,实现类接口。
ConcreteImplementor,具体实现类。
Abstraction,抽象类。
RefinedAbstraction,扩充抽象类。
实例探究
电视和遥控器就是一个典型例子。电视机和遥控器一样都有多种种类,所以将它们中任何一个定义为一个具体类都不是好办法。所以要采用两层抽象。
Implementor,实现类接口。
public interface ITV { void turnOn(); void turnOff(); void changeChanel(int channel);}
ConcreteImplementor,具体实现类。
public class SonyTV implements ITV { @Override public void turnOn() { System.out.println("Sony is turned on."); } @Override public void turnOff() { System.out.println("Sony is turned on."); } @Override public void changeChanel(int channel) { System.out.println("Sony is changed chanel- " + channel); }}
Abstraction,抽象类。
public abstract class RemoteControl implements ITV { public ITV tv; public RemoteControl(ITV tv) { this.tv = tv; } @Override public void turnOn() { tv.turnOn(); } @Override public void turnOff() { tv.turnOff(); } @Override public void changeChanel(int channel) { tv.changeChanel(channel); }}
ConcreteImplementor,扩充抽象类。
public class LogitechRemoteControl extends RemoteControl { public LogitechRemoteControl(ITV tv) { super(tv); } public void setChannelKeyboard(int channel) { tv.changeChanel(channel); System.out.println("Logitech use keyword to set channel."); }}
具体调用如下:
ITV tv = new SonyTV();LogitechRemoteControl lrc = new LogitechRemoteControl(tv);lrc.setChannelKeyboard(100);
参考
- http://www.importnew.com/6857.html
0 0
- [Java] JAVA设计模式
- Java设计模式--Java设计模式介绍
- Java设计模式-模板设计
- java设计模式-----(设计原则)
- Java设计模式-设计原则
- java设计模式-观察者模式
- Java设计模式-----Singleton模式
- Java设计模式-----Command模式
- Java设计模式-----State模式
- Java设计模式-----Composite模式
- Java设计模式 -- 策略模式
- java设计模式-----策略模式
- java设计模式_Composite模式
- java 设计模式-策略模式
- java设计模式 访问者模式
- java设计模式-代理模式
- java设计模式----适配器模式
- Java 设计模式 --装饰模式
- 白盒测试 android 静态代码扫描
- APICloud开发APP小结
- PP保护3:HideFromDebugger
- 深入浅出Java入门 之 运算符
- OpenglES 3.0基础知识
- Java 设计模式
- java 多线程 锁
- 3月题外:关于JS实现图片缩略图效果的一个小问题
- 在自己的服务器上部署 GitLab 社区版
- PAT算法笔记(七)————完美数列(快速排序)
- C
- 20170304#cs231n#6.Neural Networks Part 2: Setting up the Data and the Loss
- 安装phpredis
- Mac下安装pip,virtualenv,IPython