1. 정의

  2. Singleton 이란

  3. 사용 용도

  4. 사용 효과

  5. 사용하는 예

  6. UML

  7. Singleton Code

    class OperationSingleton:
        
        __instance = None
        ADD_OPERATION = 1 
        SUBSTRACT_OPERATION = 2
        MULTIPLY_OPERATION = 3 
        DIVIDE_OPERATION = 4
        
        @classmethod
        def get_instance(cls, *args, **kargs):
            if not cls.__instance:
                cls.__instance = cls(*args, **kargs)
            return cls.__instance
        
        def operate(self, operator_type, first_number, second_number):
            answer = 0
            operator = None
            
            if operator_type == OperationSingleton.ADD_OPERATION:
                answer = first_number + second_number
                operator = '+'
            elif operator_type == OperationSingleton.SUBSTRACT_OPERATION:
                answer = first_number - second_number
                operator = '-'
            elif operator_type == OperationSingleton.MULTIPLY_OPERATION:
                answer = first_number * second_number
                operator = '*'
            elif operator_type == OperationSingleton.DIVIDE_OPERATION:
                answer = first_number / second_number
                operator = '/'
            
            result = str(first_number) + operator + str(second_number) + '=' + str(answer)
            
            self.print_result(result)
            
        
        def print_result(self, result):
            print(result)
    
    class Client:
        def main(self):
            calculator_singleton = OperationSingleton.get_instance()
            
            first_number = 100
            second_number = 20
            
            calculator_singleton.operate(OperationSingleton.ADD_OPERATION, first_number, second_number)
            calculator_singleton.operate(OperationSingleton.SUBSTRACT_OPERATION, first_number, second_number)
            calculator_singleton.operate(OperationSingleton.MULTIPLY_OPERATION, first_number, second_number)
            calculator_singleton.operate(OperationSingleton.DIVIDE_OPERATION, first_number, second_number)
    
    client = Client()
    client.main()