2018년 7월 5일 목요일

javascript - Abstract Factory 예제

var NpcFactory = (function(){
    var npcList = [];
    return {
        addType : function(npcElement) {
            if (npcList.indexOf(npcElement) > -1) {
                console.log("duplicated");
                return;
            }
            npcList.push(npcElement);
        },
        createNpc : function(npcElement, options) {
            var Npc = npcList[npcList.indexOf(npcElement)];
            return (Npc ? new Npc.npcElement(options) : null)
        }
    }
})();

var enermyMagician = (function(){
   function enermyMagician(options){
       this.name = options.name;
   }
   enermyMagician.prototype.attack = function(target) {
        console.log("big macic");
    }
   
   return enermyMagician;

})();

var enermySword = (function(){
   function enermySword(options){
       this.name = options.name;
   }
   enermySword.prototype.attack = function(target) {
        console.log("swing");
    }
   return enermySword;

})();

const npcOfMagician = {
    npcType : 'magician',
    npcElement : enermyMagician
};
const npcOfSword = {
    npcType : 'sword',
    npcElement : enermySword
};

NpcFactory.addType(npcOfMagician);
NpcFactory.addType(npcOfSword);
var magic1 = NpcFactory.createNpc(npcOfMagician, { name: 'magic_1' });
var magic2 = NpcFactory.createNpc(npcOfMagician, { name: 'magic_2' });
var sword1 = NpcFactory.createNpc(npcOfSword, { name: 'sword_1' });

console.log(magic1.attack());
console.log(magic2.name);

Related Posts:

  • Android Kotlin Lint 툴적용 & commit hook 팀으로 작업할때나 혼자서 작업할때나 바쁘게 코딩하다보면 들여쓰기, 괄호 등 엉망인 채로 commit 하는 경우가 있어서 코드리뷰때 발견되면 참 창피한 노릇이다. 그래서 정적분석도구 툴을 사용해서 현재 프로젝트의 소스코드에 컨벤션이 문제가 있나 체크를 하면 좋다. 나아가서는 팀원들이 커밋을 할때 commit hook 로 코드를 검사후 커밋이 가능하도록 … Read More
  • Kotlin Ktlint Kotlin Ktlint Ktlint Ktlint 에디터상에서 어시스턴스로 부터 lint 오류를 발견하기 위해선 ktlint 플러그인이 필요하다. https://plugins.jetbrains.com/plugin/15057-ktlint-unofficial- gradle에서 ktlint를 실행하기 위해서는 jlleitschuh-ktl… Read More
  • ios + fastlane 으로 ipa 파일 자동으로 만들기. 1.일단  단말지정된 프로비져닝 프로파일생성2.빌드 속성에서 프로비져닝 파일을 지정하고3../fastlane/Fastfile 을 default_platform(:ios)platform :ios do  desc "Description of what the lane does" lane :make_debug_ipa do      &n… Read More
  • [Unity3d] UGUI 조이스틱 인터페이스  UGUI로 간단하게 만들수 있다. 6.(scene 전환내용에 이어서)외곽의 원, 그밑으로 핸들을 UI -> Image로 만들고 색상과 Source Image(Knob)으로 만들어둔다.https://github.com/sugoigroup/unity_study_1/commit/f5c7892cc8faf6236ceef1a49dbcf03a376f64ac스크립트는  1 2 … Read More
  • [Android] Flavors 간단 사용법 Flavors각상황(Dev, Stage, Product) 별로 패키지명과 리소스/API주소등을 달리하고 싶을때앱빌드시에 테스터에게 전달할 파일따로/ 리리스용 파일따로 분리해서 리소스도 다르게 해서 패키징 하고 싶을때가 있다.이떄 Gradle 의 Android속성중에 productFlavors 라는걸 이용하면 각 상활별로 APK 를 만드는게 가능하다.사용예   fl… Read More

0 comments:

댓글 쓰기