java 设计模式学习笔记十 bridge桥模式
来源:互联网 发布:cf占卜抽奖软件 编辑:程序博客网 时间:2024/05/16 06:02
bridge桥模式
将抽象和行为划分开来,各自独立但能动态结合
抽象的接口
/**
* 咖啡抽象类
*
* @time 下午09:14:27
* @author retacn yue
* @Email zhenhuayue@sina.com
*/
public abstract class Coffee {
//
CoffeeImp coffeeImp;
//有木有点DI的感觉,有木有
public void setCoffeeImp() {
this.coffeeImp = CoffeeImpSingleton.getTheCoffeeImp();
}
public CoffeeImp getCoffeeImp() {
return coffeeImp;
}
/**
* 冲咖啡
*/
public abstract void pourCoffee();
}
/**
* 中杯
*
* @time 下午09:29:11
* @author retacn yue
* @Email zhenhuayue@sina.com
*/
public class MediumCoffee extends Coffee {
/**
* 构造器
*/
public MediumCoffee() {
// 是否添加咖啡
setCoffeeImp();
}
/**
* 冲咖啡
*/
@Override
public void pourCoffee() {
CoffeeImp coffeeImp = this.getCoffeeImp();
for (int i = 0; i < 2; i++) {
coffeeImp.pourCoffeeImp();
}
}
}
/**
* 大杯咖啡
*
* @time 下午09:37:03
* @author retacn yue
* @Email zhenhuayue@sina.com
*/
public class SuperSizeCoffee extends Coffee {
/**
* 构造器
*/
public SuperSizeCoffee() {
// 是否加奶
setCoffeeImp();
}
/**
* 冲咖啡
*/
@Override
public void pourCoffee() {
CoffeeImp coffeeImp = this.getCoffeeImp();
for (int i = 0; i < 5; i++) {
coffeeImp.pourCoffeeImp();
}
}
}
=========================================================================
行为接口:
/**
* coffee是否加奶
*
* @time 下午09:18:41
* @author retacn yue
* @Email zhenhuayue@sina.com
*/
public abstract class CoffeeImp {
public abstract void pourCoffeeImp();
}
/**
* 不加奶
*
* @time 下午09:45:20
* @author retacn yue
* @Email zhenhuayue@sina.com
*/
public class FragrantCoffeeImp extends CoffeeImp {
/**
* 构造器
*/
public FragrantCoffeeImp() {
}
/**
* 不加奶冲咖啡
*/
@Override
public void pourCoffeeImp() {
System.out.println("啥也木加怀!详香连!");
}
}
/**
* 加奶
*
* @time 下午09:41:56
* @author retacn yue
* @Email zhenhuayue@sina.com
*/
public class MilkCoffeeImp extends CoffeeImp {
/**
* 构造器
*/
public MilkCoffeeImp() {
}
/**
* 加奶冲
*/
@Override
public void pourCoffeeImp() {
System.out.println("加新鲜人初乳!");
}
}
/**
* 控制是否加奶
*
* @time 下午09:23:06
* @author retacn yue
* @Email zhenhuayue@sina.com
*/
@SuppressWarnings("static-access")
public class CoffeeImpSingleton {
private static CoffeeImp coffeeImp;
public CoffeeImpSingleton(CoffeeImp coffeeImp) {
this.coffeeImp = coffeeImp;
}
public static CoffeeImp getTheCoffeeImp() {
return coffeeImp;
}
}
===========================================================================
/**
* 测试冲咖啡
*
* @time 下午09:49:05
* @author retacn yue
* @Email zhenhuayue@sina.com
*/
public class TestPourCoffee {
/**
* @param args
*/
@SuppressWarnings("unused")
public static void main(String[] args) {
// 加奶
// CoffeeImpSingleton singleton = new CoffeeImpSingleton(new
// MilkCoffeeImp());
// 不加奶
CoffeeImpSingleton coffeeImpSingleton = new CoffeeImpSingleton
(new FragrantCoffeeImp());
// 中杯加奶
// MediumCoffee mediumCoffee = new MediumCoffee();
// mediumCoffee.pourCoffee();
// 大杯加奶
SuperSizeCoffee superSizeCoffee = new SuperSizeCoffee();
superSizeCoffee.pourCoffee();
}
}
将抽象和行为划分开来,各自独立但能动态结合
抽象的接口
/**
* 咖啡抽象类
*
* @time 下午09:14:27
* @author retacn yue
* @Email zhenhuayue@sina.com
*/
public abstract class Coffee {
//
CoffeeImp coffeeImp;
//有木有点DI的感觉,有木有
public void setCoffeeImp() {
this.coffeeImp = CoffeeImpSingleton.getTheCoffeeImp();
}
public CoffeeImp getCoffeeImp() {
return coffeeImp;
}
/**
* 冲咖啡
*/
public abstract void pourCoffee();
}
/**
* 中杯
*
* @time 下午09:29:11
* @author retacn yue
* @Email zhenhuayue@sina.com
*/
public class MediumCoffee extends Coffee {
/**
* 构造器
*/
public MediumCoffee() {
// 是否添加咖啡
setCoffeeImp();
}
/**
* 冲咖啡
*/
@Override
public void pourCoffee() {
CoffeeImp coffeeImp = this.getCoffeeImp();
for (int i = 0; i < 2; i++) {
coffeeImp.pourCoffeeImp();
}
}
}
/**
* 大杯咖啡
*
* @time 下午09:37:03
* @author retacn yue
* @Email zhenhuayue@sina.com
*/
public class SuperSizeCoffee extends Coffee {
/**
* 构造器
*/
public SuperSizeCoffee() {
// 是否加奶
setCoffeeImp();
}
/**
* 冲咖啡
*/
@Override
public void pourCoffee() {
CoffeeImp coffeeImp = this.getCoffeeImp();
for (int i = 0; i < 5; i++) {
coffeeImp.pourCoffeeImp();
}
}
}
=========================================================================
行为接口:
/**
* coffee是否加奶
*
* @time 下午09:18:41
* @author retacn yue
* @Email zhenhuayue@sina.com
*/
public abstract class CoffeeImp {
public abstract void pourCoffeeImp();
}
/**
* 不加奶
*
* @time 下午09:45:20
* @author retacn yue
* @Email zhenhuayue@sina.com
*/
public class FragrantCoffeeImp extends CoffeeImp {
/**
* 构造器
*/
public FragrantCoffeeImp() {
}
/**
* 不加奶冲咖啡
*/
@Override
public void pourCoffeeImp() {
System.out.println("啥也木加怀!详香连!");
}
}
/**
* 加奶
*
* @time 下午09:41:56
* @author retacn yue
* @Email zhenhuayue@sina.com
*/
public class MilkCoffeeImp extends CoffeeImp {
/**
* 构造器
*/
public MilkCoffeeImp() {
}
/**
* 加奶冲
*/
@Override
public void pourCoffeeImp() {
System.out.println("加新鲜人初乳!");
}
}
/**
* 控制是否加奶
*
* @time 下午09:23:06
* @author retacn yue
* @Email zhenhuayue@sina.com
*/
@SuppressWarnings("static-access")
public class CoffeeImpSingleton {
private static CoffeeImp coffeeImp;
public CoffeeImpSingleton(CoffeeImp coffeeImp) {
this.coffeeImp = coffeeImp;
}
public static CoffeeImp getTheCoffeeImp() {
return coffeeImp;
}
}
===========================================================================
/**
* 测试冲咖啡
*
* @time 下午09:49:05
* @author retacn yue
* @Email zhenhuayue@sina.com
*/
public class TestPourCoffee {
/**
* @param args
*/
@SuppressWarnings("unused")
public static void main(String[] args) {
// 加奶
// CoffeeImpSingleton singleton = new CoffeeImpSingleton(new
// MilkCoffeeImp());
// 不加奶
CoffeeImpSingleton coffeeImpSingleton = new CoffeeImpSingleton
(new FragrantCoffeeImp());
// 中杯加奶
// MediumCoffee mediumCoffee = new MediumCoffee();
// mediumCoffee.pourCoffee();
// 大杯加奶
SuperSizeCoffee superSizeCoffee = new SuperSizeCoffee();
superSizeCoffee.pourCoffee();
}
}
- java 设计模式学习笔记十 bridge桥模式
- JAVA--桥接模式(Bridge)--设计模式十
- 设计模式学习笔记(一): Bridge 模式
- 设计模式学习笔记--桥梁(Bridge)模式
- 设计模式学习笔记八(Bridge桥接模式)
- 设计模式学习笔记(四)—Bridge桥接模式
- [设计模式学习笔记]Bridge桥接模式
- 学习:java设计模式—Bridge模式
- 设计模式学习笔记---桥接模式bridge(Java版)
- 设计模式 笔记 桥接模式 Bridge
- 设计模式学习----Bridge桥接模式
- 《设计模式》学习笔记--桥接Bridge
- 设计模式之Bridge学习笔记
- 设计模式笔记-Bridge模式
- Java设计模式-----Bridge桥接模式
- Java设计模式-----Bridge桥接模式
- Java设计模式----桥接模式(Bridge)
- java bridge设计模式
- 个人理解 java虚拟机中的符号引用和直接引用
- // c 程序设计设计 教材例8.16 指向函数的指针。 实现同一函数,根据参数执行不同的子函数。
- hdu 1010 Tempter Of TheBone
- // 函数指针的使用,使用c++编译器。
- 堆排序
- java 设计模式学习笔记十 bridge桥模式
- 如何在iOS中使用libxml
- iphone__game center 多人游戏
- //TRACE("hello Debugger\n");// 异常
- printf("%f\n",5);/
- “酒店装修,暂停营业”的真相
- C语言 利用异常绕过溢出保护攻击程序例子
- ubuntu 12.10 常用软件自动安装脚本
- 关于马尔科夫随机场MRF的思考