面向对象设计原则
开放封闭原则:
一个软件实体如类、模块和函数应该对拓展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。
里氏替换原则:
所有引用的父类的地方必须能透明的使用其子类的对象
依赖倒置原则:
高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象;即针对接口编程,而不是针对实现编程
工厂方法模式
定义:创建对象的接口(工厂接口),让子类决定实例化哪一个产品类
角色:
抽象工厂角色(creator)
具体工厂角色(concrete creator)
抽象产品角色(product)
具体产品角色(concrete product)
例子:比如我们有一个染色的机器,我们要给指定的机器生产对应的工艺编程
from abc import ABCMeta, abstractmethod #抽象产品 class CraftProgramming(metaclass=ABCMeta): #abstract class @abstractmethod def setStep(self,step: list): pass #具体产品 class ModelTypeACraft(CraftProgramming): def __init__(self,childModelType=False): self.childModelType =childModelType def setStep(self,step: list): if self.childModelType: print(f"A机型-{self.childModelType}工艺工步为{step}") else: print(f"A机型工艺工步为{step}") class ModelTypeBCraft(CraftProgramming): def setStep(self,step: list): print(f"B机型工艺工步为{step}") #抽象工厂 class CraftProgrammingFactory(metaclass=ABCMeta): @abstractmethod def creatCraft(self): pass #具体工厂 class ModelTypeACraftFactory(CraftProgrammingFactory): def creatCraft(self): return ModelTypeACraft() class ModelTypeBCraftFactory(CraftProgrammingFactory): def creatCraft(self): return ModelTypeBCraft() class ModelTypeAChildCraftFactory(CraftProgrammingFactory): def creatCraft(self): return ModelTypeACraft(childModelType=True) cf = ModelTypeACraftFactory() c = cf.creatCraft() c.setStep([])
07-09 15:29