泛型与无聊

type

  TActionComponent = class(TObject)

  public

     procedure Execute;virtual;

  end;



  TStuckPig = class(TActionComponent)

  public

     procedure Execute;override;

  end;



  TRole = class(TObject)

  public

    Name:String[255];

    ActionList:TList<TActionComponent>;

  end;



  TWorld = class(TObject)

  public

     ObjectList:TDictionary<string,TList<TRole>>; end;



  TForm2 = class(TForm)

    Button1: TButton;

    procedure Button1Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;



var

  Form2: TForm2;



implementation



{$R *.dfm}



procedure TForm2.Button1Click(Sender: TObject);

var

  World:TWorld;

  Roles:TList<TRole>;

  Role:TRole;

  ActionComponent:TActionComponent;

begin

  World:=TWorld.Create;



  //角色:屠夫

  Role:=TRole.Create;

  Role.Name:='屠夫';

  //杀猪动作或者叫技能可能更准确

  ActionComponent:=TStuckPig.Create;

  Role.ActionList.Add(ActionComponent);

  Roles:=TList<TRole>.Create;

  Roles.Add(Role);



  //角色:将军

  Role:=TRole.Create;

  Role.Name:='骠骑大将军';

  Roles.Add(Role);

  //角色:书法家

  Role:=TRole.Create;

  Role.Name:='书法家';

  Roles.Add(Role);

  //角色:酒鬼

  Role:=TRole.Create;

  Role.Name:='酒鬼';

  Roles.Add(Role);

  //赋与张飞各角色

  World.ObjectList.Add('张飞',Roles);



end;

 

你可能感兴趣的:(泛型)