泛化:子类与父类的关系,概念的复用,耦合度最高 B类泛化A类,意味着B类是A类的一种 做法B类继承A类 关联:(聚合/组合)部分与整体的关系,功能的复用影响一个类的成员 A与B关系,意味着B是A的一部分 做法:在A类中包含B类成员 依懒:合作关系,一种相对松散的协作,影响一个方法。 A类依赖B类,意味着A类中的某些功能是B类中实现 做法:B类作为A类的方法参数,并不是A类成员。 .组合复用原则(复用的最佳实现) Compsite Reyse Principle 如果单单为了代码复用优先组合复用,而非继承复用 组合的耦合性相对继承低。 员工管理器 1、管理所有员工 2、计算所有员工的工资 员工: 程序员:底薪+项目分红 消售:底薪+锁售额*0.05 测试师…… …… ''' class Calculate: def calcu(self): raise NotImplementedError class Personne: def __init__(self,name): self.name=name self.dict_salary={} def basecalc(self,target): if isinstance(target, Calculate): self.dict_salary[self.name]=target.calcu() def printpro(self): for ik,jk in self.dict_salary.items(): print(ik,jk) class Programme(Calculate): def __init__(self, base_pay,project_dividend): self.base_pay=base_pay self.project_dividend=project_dividend def calcu(self): return self.base_pay+self.project_dividend class Test(Calculate): def __init__(self, test_pay, sales_dividend): self.test_pay=test_pay self.sales_dividend=sales_dividend def calcu(self): return self.test_pay+self.sales_dividend*0.05 per=Personne('张三') pro=Programme(12000,5000) per.basecalc(pro) pero=Personne('李四') tes=Test(1200,3000) pero.basecalc(tes) per.printpro() pero.printpro() print(per.dict_salary) |
|
来自: 新用户0935snDB > 《待分类》