專案控制檯和瀏覽器輸出亂碼解決辦法
阿新 • • 發佈:2020-08-11
1、簡介
使抽象和實現進行解耦,使得二者可以獨立變化。通過抽象化和實現化之間的橋接結構實現解耦。
核心程式碼: 抽象類依賴實現類
一個簡單的例子就是輪渡,輪渡公司可以過江,你也要過江,但你又不會游泳,這時就需要有個具體幹事的東西,讓輪渡公司去選擇,你是要乘快艇、小船、還是遊艇過江。
這裡的遊艇就相當於一個橋樑,抽象類和實現類都通過遊艇進行關聯,由遊客選擇遊艇型別、選擇遊艇級別和價位。然後遊艇由父類遊艇管理,遊客僅供使用[呼叫].
2、實現
/** * 輪船公司介面 * @author Administrator */ public abstract class ShippingCompany { protected Shipping shipping; public ShippingCompany(Shipping shipping) { this.shipping = shipping; } public abstract void travel(); } /** * 輪船介面 * @author Administrator */ public interface Shipping { public void travelRiver(int level, double money); } /** * 郵輪類 * @author Administrator */ public class Cruise implements Shipping{ @Override public void travelRiver(int level, double money) { System.out.println(); System.out.println(String.format("I'm Cruise level: %d, cost: %f", level, money)); } } /** * 遊艇類 * @author Administrator */ public class SpeedBoat implements Shipping{ @Override public void travelRiver(int level, double money) { System.out.println(String.format("I'm SpeedBoat level: %d, cost: %f", level, money)); } } /** *遊客類 */ public class MrLiu extends ShippingCompany{ private int level; private double money; public MrLiu(int level, double money, Shipping shipping) { super(shipping); this.level = level; this.money = money; } @Override public void travel() { shipping.travelRiver(level, money); } } // Test int level = 3; double money = 88888888; Shipping cruise = new Cruise(); MrLiu liu1 = new MrLiu(level, money, cruise); Shipping speedBoat = new SpeedBoat(); MrLiu liu2 = new MrLiu(level, money, speedBoat); liu1.travel(); liu2.travel();