java 设计模式学习笔记十 bridge桥模式
生活随笔
收集整理的這篇文章主要介紹了
java 设计模式学习笔记十 bridge桥模式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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();
}
}
轉載于:https://www.cnblogs.com/retacn-yue/archive/2012/10/18/2761215.html
總結
以上是生活随笔為你收集整理的java 设计模式学习笔记十 bridge桥模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑开机密码怎么绕过 绕过电脑开机密码的
- 下一篇: POJ 3621 Sightseeing