1、简单工厂模式
概念:工厂可以根据条件产生不同功能的类
程序实例:四则运算计算器,根据用户的输入产生相应的运算类,用这个运算类处理具体的运算。
代码特点:以C/C++中的switch…case…分支使用字典的方式代替,使用异常的机制对除数为0的情况进行处理。
2、UML图解(C#语法描述)
工具visio+C#语法描述
代码例子
原版为C#代码描述,下面使用的是python进行描述
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from abc import ABCMeta, abstractmethod
class Operation(metaclass=ABCMeta):
@abstractmethod
def get_result(self, meta):
# 抽象的方法,后面继承实现
pass
class OperationAdd(Operation):
def get_result(self):
return self.op1 + self.op2
class OperationSub(Operation):
def get_result(self):
return self.op1 -self.op2
class OperationMul(Operation):
def get_result(self):
return self.op1 * self.op2
class OperationDiv(Operation):
def get_result(self):
try:
result = self.op1/self.op2
return result
except:
print("error.divided by zero.")
return 0
class OperationUndef(Operation):
def get_result(self):
print("Undefine operation.")
return 0
class OperationFactory:
# 操作客户端
operation = {}
operation["+"] = OperationAdd()
operation["-"] = OperationSub()
operation["*"] = OperationMul()
operation["/"] = OperationDiv()
def create_operation(self, ch):
if ch in self.operation:
op = self.operation[ch]
else:
op = OperationUndef
return op
if __name__ == '__main__':
op = input("operator:")
opa = int(input("a:"))
opb = int(input("b:"))
factory = OperationFactory()
cal = factory.create_operation(op)
cal.op1 = opa
cal.op2 = opb
print(cal.get_result())
参考链接:
大话设计模式
https://www.jianshu.com/p/0b2a6ec0ee3d
https://www.cnblogs.com/wuyuegb2312/archive/2013/04/09/3008320.html