设计模式就是来解决应变---原型(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。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值