魔力拼图(Builder)
2003-07-14 15:59
537 查看
假如有一种拼图可以拼贴成任何图形.那么我们只要生产出这种拼图的单个部件就可以了.那样就
会使复杂的图形变的简单化.也就是说我们只用设计每一个单个步骤就可以了.这样做的好处是什
么呢?很显然.我们在利用元件生产产品.而不需要直接生产一个巨大的产品.因为可能这些元件本
身就具有通用性.另外的好处是.来自与其本身的复杂性.因为要生产就必须要组装.而把生产和组
装分开来考虑.那么复杂性就会有所降低.也就是所谓的解偶.只做单一考虑那么这里就提供了两个
重要职能.一个是负责生产部件的Builder另外一个是负责组合的Director.这样就可以把负责的
产品解偶.
那么,现在我们来模拟RPG游戏中常出现的装备匹配问题.人物可以配备的装备为护手,护脚.胸甲
头盔.那么我们现在来分开实现,让后统一整合.
interface IBuilder {
void BuilderHand();
void BuilderFeet();
void BuliderHead();
void BuliderBody();
}
//可供生产的部件
abstract class AbstractPart{
string PartName;
}
class FeetPart:AbstractPart{
FeetPart(){
Console.Writeline("the Part is Feet");
}
}
class BodyPart:AbstractPart{
BodyPart(){
Console.Writeline("the Part is Body");
}
}
class HeadPart:AbstractPart{
HeadPart(){
Console.Writeline("the Part is Head");
}
}
class HandPart:AbstractPart{
HandPart(){
Console.Writeline("the Part is Hand");
}
}
//构造实际构造者
public class ArmBuilder : IBuilder{
AbstractPart Head,Feet,Body,Hand;
public void BuilderHand(){
Hand=new HandPart();
}
public void BuilderFeet(){
Feet=new FeetPart();
}
public void BuliderHead(){
Head=new HeadPart();
}
public void BuliderBody(){
Body=new BodyPart();
}
}
//整合者负责装配
public class Director {
private IBuilder builder;
public Director( IBuilder builder ) {
this.builder = builder;
}
public void construct() {
builder.BuildFoot();
builder.BuildHead();
builder.BuildBody();
builder.BuildHand();
}
}
public class Client
{
public static int Main(string[] args)
{
IBuilder builder = new ArmBuilder();
Director director = new Director(builder);
director.Construct();
return 0;
}
}
相关文章推荐
- 魔力小孩拼图:寓教于乐的简单拼图游戏
- 触摸控制移动与缩放算法 - Cocos2d-JS + CocosBuilder
- Errors running builder 'DeploymentBuilder' on project_java
- Errors running builder 'DeploymentBuilder' on project
- 魔力宝贝 - 窗口分辨率修改
- 用 Form-Sql-Builder-mysql 将用户提交的表单自动转化成sql
- C++设计模式-Builder建造者模式
- Spring工具类ToStringBuilder用法简介
- [Leveldb源码剖析疑问]-block_builder.cc之Add函数
- DrpBuilder布局一体化网络分销系统
- android 如何关闭dialog 如何关闭builder
- 设计模式:构建器模式(Builder)
- WITH AS StringBuilder一个小用法
- 生成器模式(Builder)C++实现
- C#设计模式(5)——建造者模式(Builder Pattern)
- C++Builder Error: Unit11.cpp(354): E2451 Undefined symbol 'Form12'
- String StringBuffer StringBuilder (转)
- jquery + css 特效 之 一款基于jQuery/CSS3实现拼图效果的相册
- UNIX网络编程——原始套接字的魔力【续】
- UNIX网络编程——原始套接字的魔力【下】