仿照<java與模式>中bridge模式的例子自己改寫的一個(gè)例子:
有N個(gè)飛機(jī)制造商(AirBus.....),每個(gè)飛機(jī)制造商有客機(jī)(PassenagerPlane)和貨機(jī)(CargoPlane).....實(shí)現(xiàn)代碼如下:
1.飛機(jī)制造商抽象接口:
interface IAirPlaneMaker
{
string name { get;} //制造商名稱
IAirPlane producePass(); //生產(chǎn)一量客機(jī)
//生產(chǎn)一兩貨機(jī)
}2.飛機(jī)抽象接口
interface IAirPlane
{
void Fly(); //飛行方法
IAirPlaneMaker maker { get;set;} //制造商
}
3.飛機(jī)制造商的一個(gè)實(shí)現(xiàn)
class AirBus : IAirPlaneMaker
{
private string _name = "AirBus company";

#region IAirPlaneMaker Members

public string name
{
get
{
return this._name;
}
}

public IAirPlane producePass()
{
IAirPlane pass = new PassengerPlane();
pass.maker = this;

return pass;
}

#endregion
}4 飛機(jī)的實(shí)現(xiàn)
class PassengerPlane : IAirPlane
{
private IAirPlaneMaker _maker;

#region IAirPlane Members

public void Fly()
{
System.Console.WriteLine("The " + _maker.name + "'s PassenterPlane is flying~~~!");
}

public IAirPlaneMaker maker
{
get
{
return this._maker;
}
set
{
this._maker = value;
}
}

#endregion
}

class CargoPlane : IAirPlane
{
private IAirPlaneMaker _maker;

#region IAirPlane Members

public void Fly()
{
System.Console.WriteLine("The " + _maker.name + "'s CargoPlane is flying~~~!");
}

public IAirPlaneMaker maker
{
get
{
return this._maker;
}
set
{
this._maker = value;
}
}

#endregion
}5 通過(guò)這種bridge模式,客戶端代碼非常簡(jiǎn)潔
IAirPlaneMaker maker = new AirBus();
IAirPlane passPlane = maker.producePass();
passPlane.Fly();
考慮:飛機(jī)制造商中生產(chǎn)飛機(jī)的方式不是很好,藕合度太高,如果要新增加一種飛機(jī)生產(chǎn),則必須改變制造商接口極其所有實(shí)現(xiàn)子類。考慮使用工廠模式實(shí)現(xiàn)。。。。。
有N個(gè)飛機(jī)制造商(AirBus.....),每個(gè)飛機(jī)制造商有客機(jī)(PassenagerPlane)和貨機(jī)(CargoPlane).....實(shí)現(xiàn)代碼如下:
1.飛機(jī)制造商抽象接口:
interface IAirPlaneMaker
{
string name { get;} //制造商名稱
IAirPlane producePass(); //生產(chǎn)一量客機(jī)
//生產(chǎn)一兩貨機(jī)
}
interface IAirPlane
{
void Fly(); //飛行方法
IAirPlaneMaker maker { get;set;} //制造商
}
class AirBus : IAirPlaneMaker
{
private string _name = "AirBus company";
#region IAirPlaneMaker Members
public string name
{
get
{
return this._name;
}
}
public IAirPlane producePass()
{
IAirPlane pass = new PassengerPlane();
pass.maker = this;
return pass;
}
#endregion
}
class PassengerPlane : IAirPlane
{
private IAirPlaneMaker _maker;
#region IAirPlane Members
public void Fly()
{
System.Console.WriteLine("The " + _maker.name + "'s PassenterPlane is flying~~~!");
}
public IAirPlaneMaker maker
{
get
{
return this._maker;
}
set
{
this._maker = value;
}
}
#endregion
}
class CargoPlane : IAirPlane
{
private IAirPlaneMaker _maker;
#region IAirPlane Members
public void Fly()
{
System.Console.WriteLine("The " + _maker.name + "'s CargoPlane is flying~~~!");
}
public IAirPlaneMaker maker
{
get
{
return this._maker;
}
set
{
this._maker = value;
}
}
#endregion
}
IAirPlaneMaker maker = new AirBus();
IAirPlane passPlane = maker.producePass();
passPlane.Fly();考慮:飛機(jī)制造商中生產(chǎn)飛機(jī)的方式不是很好,藕合度太高,如果要新增加一種飛機(jī)生產(chǎn),則必須改變制造商接口極其所有實(shí)現(xiàn)子類。考慮使用工廠模式實(shí)現(xiàn)。。。。。
浙公網(wǎng)安備 33010602011771號(hào)