設計模式就是來解決應變---原型(prototype)


抽象a直接依賴於實現細節b
抽象a直接依賴於抽象B,實現細節b依賴於抽象B。


在軟件系統中。經常面臨着“某些結構複雜的對象”
如何應對這種變化?如何向“客戶程序(使用這些對象的程序)”隔離出“這些交易對象”。
從而使得“依賴這些易變對象的客戶程序”不隨便需求改變而改變。
假設我們現在有我們現在開發一個遊戲系統
裏面有很都個角色都作自己的事情。
於是我們就下出下面

經過分析得到這幾個角色是一些不斷變法的的對象
現在怎麼辦?
想想設計模式;應用於變法的設計模式。
先找那個是不變的
那些是變的
把不變的抽象成接口   於是有有這個結構

public void GameSystem
{
public void run()
{
  NormalActor noramlActor1
=new NormalActor();
NormalActor noramlActor2
=new NormalActor();
NormalActor noramlActor3
=new NormalActor();
  
  flyactor flyactor1
=new flyactory();
flyactor flyactor2
=new flyactory();
flyactor flyactor3
=new flyactory();
   WaterActor waterActor1
=new WaterActor(); 
 WaterActor waterActor2
=new WaterActor();
 WaterActor waterActor3
=new WaterActor();
 

}


}



原型設計模式
意圖:
   使用原型實例制定創階對象的種類。然後通過高背這些原型來創建新的對象。


////////////////////////////////////////////////////////
 抽象類

public abstract class NormalActor implements Cloneable
{
   
public abstract NormalActor clone();
}

public abstract class  FlyActor implements Cloneable
{
 
public abstract NormalActor clone();
}

public abstract FlyActor  WaterActor implements Cloneable

{
 
public abstract WaterActor clone();
}


 /////////////////////////////////////////
具體類

public class NormalActorA extends NormalActor
{
public  NormalActor clone()
{
   
return (NormalActorA)this.clone()

}

}

public class FlyActorA extends FlyActo
{
.............
}


public class WaterActorA extends WaterActor
{
....
}



/////////////////////////////////////////////

public class Gamesystem
{
public void run(NormalActor normalActor1,flyactory flyactor,WaterActor wateracto)
{
NormalActor noramlActor1
=normalactor.clone();
NormalActor noramlActor2
=normalactor.clone();
NormalActor noramlActor3
=normalactor.clone();

  Flyactor flyActor1
=new flyactor.clone();
  Flyactor flyActor2
=new flyactor.clone();
  Flyactor flyActor3
=new flyactor.clone();

   WaterActor waterActor1
=wateractor.clone(); 
WaterActor waterActor2
=wateractor.clone();
WaterActor waterActor3
=wateractor.clone();


}


這樣在編譯前就沒有有依賴關係。

 

}


總結
   prototype模式用於隔離類對象的使用者和軀體類型(易變類)之間的耦合關係,
他同樣要求這些“易變類”擁有“穩定的接口”;
   prototye模式對於“如何創建易變的屍體對象”採用“原型克隆”的方法來作。他的使用我們可以非常
靈活地動態創建“擁有某些穩定接口”地新對象-所需工作僅僅是註冊一個新類地對象
(即原型),然後在任何需要地地方不斷地Clone。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章