Core of the factory model:
There is such a group of classes, they have very little difference, just like operator classes, their difference is just different operator numbers. In this way, we can create a factory to "produce" the required class instances as needed.
# Encoding = UTF-8 ## by Panda # simple factory mode class operatebase (): Result = 0; def getresult (Self): return self. result; Class operationadd (operatebase): def _ init _ (self, NUMA, numb): Self. result = NUMA + numb; def getresult (Self): return self. result; Class operationsub (operatebase): def _ init _ (self, NUMA, numb): Self. result = NUMA-numb; def getresult (Self): return self. result; Class operationmult (operatebase): def _ init _ (self, NUMA, numb): Self. result = NUMA * numb; def getresult (Self): return self. result; Class operationdiv (operatebase): def _ init _ (self, NUMA, numb): Self. result = NUMA/numb; def getresult (Self): return self. result; Class operationfactory (): @ staticmethod def createoperate (operate, NUMA, numb): optlist = {'+': operationadd, '-': operationsub, '*': operationmult, '/': operationdiv,} operator = operatebase () if (optlist. has_key (operate): Operator = optlist [Operate] (NUMA, numb); Return operdef clientui (): OPT = raw_input ("Please input a operation (+ -*/): "); NUMA = raw_input (" Please input the first number: "); numb = raw_input (" Please input the second number: "); condition = operationfactory. createoperate (OPT, float (NUMA), float (numb) print "restlt:", response. getresult () returnif _ name _ = '_ main _': clientui ();
The UML class diagram is as follows: