设计模式就是来解决应变---原型(prototype)
来源:互联网 发布:js身份证正则表达式 编辑:程序博客网 时间:2024/05/21 11:22
抽象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 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 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 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();
}
这样在编译前就没有有依赖关系。
...{
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。
- 设计模式就是来解决应变---原型(prototype)
- 设计模式-prototype原型模式
- 读《大话设计模式》---原型模式(Prototype)
- 设计模式原型模式(Prototype)- 面馆里的菜单
- 设计模式原型模式(Prototype)- 面馆里的菜单
- 设计模式原型模式(Prototype)- 面馆里的菜单
- 原型(Prototype)设计模式
- 设计模式-原型设计模式(Prototype)
- 设计模式-原型设计模式(Prototype)
- 设计模式 原型Prototype
- prototype(原型设计模式)
- 设计模式--Prototype(原型)
- Prototype(原型)设计模式
- 设计模式-prototype原型
- 设计模式之原型模式(Prototype)
- 设计模式--原型模式(Prototype)
- 设计模式之原型模式(Prototype)
- 设计模式-原型模式(Prototype Pattern)
- [预告]将要推出编程方式事务管理祥解!
- 成功法则
- ubuntu 资料
- 使用C#编译器
- 零售业数据挖掘的再认识
- 设计模式就是来解决应变---原型(prototype)
- 中国人的“不相信”原则
- 软件工程 工具之二—— PowerDesigner v12(六)
- Windows Programming系列 作业
- 大向导电子商务
- 谁是未来中国的企业领头羊?
- 入住csdn
- The type A collides with a package
- 转:华为的部分面试题