假设我写了一些绘图程序。该程序依赖于可以绘制图形基元的模块。但是,该图形模块可以是支持已使用操作的任何。它可以是在屏幕上绘图或写入文件格式或用笔控制机器人的模块。
我想动态切换该模块。在C ++中,人们通常会使用抽象工厂模式:绘图程序接收工厂作为参数,从中构造所需的图形基元。在Python中实现工厂模式是完全可行的。
但是 - 将包用作参数会是个好主意吗?从纯粹的技术角度来看,像以下这样的程序可以起作用:
import screen_graphics
import robot_graphics
def my_plot_prog(graphics_lib):
...
my_plot_prog(screen_graphics) # plot on screen
my_plot_prog(robot_graphics) # R/C robot with a pen
我可以这样做,还是有一些严重的陷阱或更好的方法?