→ gyd: 我前面回的文章架構就是這樣, 只是功能再更強大一點 10/27 23:58
→ gyd: 補充一下, 這邊指的強大不是指優劣, 是指有更複雜的內容 10/27 23:59
→ dreamnook: 總覺在switch可以改用Factory的方式產生 10/28 13:44
你說的是這個吧
public static Skill GetSkill(uint uXid, float fBattleTime)
{
_SKILL_ skill = _SKILL_.GetData(uXid);
if(skill == null)
return new Empty();
Skill s = null;
switch(skill.eSkillEff)
{
case SKILL_EFFECT.ADD_DAMAGE_FOR_ARMS:
s = new AddDamageForArms(skill);
break;
case SKILL_EFFECT.ATK_CHANGE:
s = new AtkChange(skill);
break;
case SKILL_EFFECT.CHANGE_ADD_HP_VALUE:
s = new ChangeAddHpValue(skill);
break;
.
.
.
.
}
原文中的是我重新打的東西 而且主題是多型 我就只挑相關的東西而已
我總不可能把我寫的東西全部po上來吧= =a
不過說真的 我也不是本科系出身,進入業界後也沒學過Design Pattern
直到別人說啥Design Pattern我才發現我不知不覺用了這麼多
剛剛你說Factory我還特地去查一下是什麼
見識短淺敬請見諒
※ 編輯: bantime (61.216.36.98), 10/28/2015 13:58:18
※ 編輯: bantime (61.216.36.98), 10/28/2015 14:12:53
推 cowbaying: 基本上 商用遊戲都是用了大量的factory method 10/28 14:34
→ cowbaying: 用來避免過多的程式碼重複 10/28 14:35
→ cowbaying: 這也是一種組件的概念 用OOP的單一或多重繼承來達成 10/28 14:36
→ cowbaying: 很多遊戲引擎也都是這樣 10/28 14:36
→ cowbaying: 應該說都是這樣子了 因為這樣要擴充是很方便的 10/28 14:37
→ cowbaying: 缺少的功能只要實作即可 10/28 14:37
→ dreamnook: 我只是順口說說而已呀XD Factory method蠻合適的 10/28 15:25
→ dreamnook: design pattern我本科系出身也沒教多少 也是業界才懂 10/28 15:26