추상 팩토리란 추상화(Abstract ) + 팩토리(Factory)를 합친 단어이다.

  • 추상화 : 실제 코드 부분이 작성되지 않고 어떻게 사용할지 명세만 정의하는 것이다.
  • 팩토리 :  객체의 생성을 팩토리 클래스로 위임하여 객체를 생성하는 패턴
  • 추상 팩토리 : 팩토리를 추상화해서 관련있는 객체의 집합을 생성할 수 있는 팩토리를 만들고 조건에 따라 팩토리를 생성해서 서로 관련된 객체를 생성하는 패턴
public abstract class Phone {

    public abstract void power();
}

public class SamsungPhone extends Phone {

    @Override
    public void power() {
        System.out.println("samsung phone power on");
    }

}

public class ApplePhone extends Phone {

    @Override
    public void power() {
        System.out.println("apple phone power on");
    }

}

SamsungPhone 클래스와 ApplePhone 클래스는 Phone 추상클래스를 상속하고 power() 메소드를 오버라이딩한다.

 

public interface PhoneFactory {

    public Phone create();
}

public class ApplePhoneFactory implements PhoneFactory {

    @Override
    public Phone create() {
        return new ApplePhone();
    }

}

public class SamsungPhoneFactory implements PhoneFactory {

    @Override
    public Phone create() {
        return new SamsungPhone();
    }

}

ApplePhoneFactory 클래스와 SamsungPhoneFactory 클래스는 PhoneFactory를 상속하고 create()메소드를 오버라이딩한다.
create() 메소드는 각각 팩토리 클래스 별로 제조사에 맞는 Phone 클래스를 반환한다.

public enum PhoneType {
    SAMSUNG, APPLE
}

public class Main {

    public static void main(String[] args) {
        PhoneFactory phoneFactory = null;
        PhoneType phoneType = PhoneType.SAMSUNG;

        switch (phoneType) {
            case SAMSUNG:
                phoneFactory = new SamsungPhoneFactory();
                break;
            case APPLE:
                phoneFactory = new ApplePhoneFactory();
                break;
            default:
                throw new RuntimeException(phoneType.toString() + " is not existed");
        }

        Phone phone = phoneFactory.create();
        phone.power();

    }

}

enum 타입인 phoneType 별로 PhoneFactory를 생성하고 create() 메소드를 실행한 뒤, phone의 power() 메소드를 실행한다.
phoneType 별로 생성되는 Factory가 바뀌어서 생성되는 phone 또한 바뀌는 것을 볼 수 있다.


출처: https://dev-momo.tistory.com/entry/추상-팩토리-패턴-Abstract-Factory-Pattern [Programming Note]

출처: bamdule.tistory.com/161

 

취업을 해야한다.

나에게 있는 것은 과제로 만든 게임 개발 포트폴리오뿐.

하지만 나는 웹. 그것도 프론트로 취업하길 원한다.

 

일단 작은 조각 프로젝트들을 하고 그걸 하나의 포트폴리오에 이어붙일 생각이다.

게임 개발만 알지 웹은 하나도 모르는...

 

그래도 게임 개발 할때는 내 성과물을 공유하기 힘들었는데

웹은 링크만 뿌리면 되는거 아닌가?

 

나에게 좀 더 유리해졌다고 생각할 것이다.

나는 나 스스로 개발에 재능이 없지 않다고 생각한다.

아직 이런 근자감이 가득 찼을 때 동기 삼아 어서 공부를 하고싶다.

 

하지만 생계는 이어나가야하니까.

알바로 가볍게 일하면서 서브 프로젝트로 포트폴리오를 쌓을까 한다.

 

이 회사는 나에게 도움되지 않는다.

아니.

다른 회사보다는 도움되지 않는다.

나를 성장시키지 못한다.

 

좀 제대로된 회사를 얻고 싶다.

불법 사이트를 만들지 않는,

one Note에서 코드 복붙해서 돌려막지 않는,

보안 수준이 낮지 않은 그런 회사.

 

내가 그런 곳에 갈 수 있는 사람이 되자.

열심히 공부해 성장하는 사람이 될 것이다.

 

꼭 개발이 아니어도. 어느 방면으로든 꾸준히 노력할 것이다.

Uncaught RangeError: Maximum call stack size exceeded

setTimeout(timer(), 1000);

timer가 엄청 불리고 다음에 스택 오버되고 난리남

Uncaught RangeError: Maximum call stack size exceeded

알고보니 함수 이름 써야하는거임.

괄호를 빼야함

 

setTimeout(timer, 1000);

+ Recent posts