模板方法模式(python)

本文介绍模板方法模式的应用特性及其实现原理,通过示例代码展示了如何利用该模式减少子类中的重复代码,实现相同逻辑的不同细节变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

模板方法模式 :定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。因此模板方法使得子类可以在不改变一个算法的结构的情况下重新定义该算法的某些特定变量。

优点:把不变行为搬移到超类,去除子类中的重复代码。

应用特性:重复做相同逻辑的事情,但是具体细节不同的场景

结构特性:相同逻辑抽取至父类,具体细节留置子类。可以说是对逻辑的抽象


[python]  view plain  copy
  1. #encoding=utf-8  
  2. #  
  3. #by panda  
  4. #模板方法模式  
  5.   
  6.   
  7. def printInfo(info):  
  8.     print unicode(info, 'utf-8').encode('gbk')  
  9.   
  10. #金庸小说试题考卷  
  11. class TestPaper:  
  12.     def TestQuestion1(self):  
  13.         printInfo('练成倚天剑和屠龙刀的玄铁可能是[] a.球墨铸铁 b.马口铁 c.高速合金钢 d.碳素纤维')  
  14.         printInfo('答案:'+self.Answer1())  
  15.       
  16.     def TestQuestion2(self):  
  17.         printInfo('杨过、程英、陆无双铲除了情花,造成[] a.使这种植物不再害人 b.使一种珍稀物种灭绝 c.破坏生态平衡 d.造成该地区沙漠化')  
  18.         printInfo('答案:'+self.Answer2())  
  19.   
  20.     def TestQuestion3(self):  
  21.         printInfo('蓝凤凰致使华山师徒、桃谷六仙呕吐不止,如果你是大夫,会给他们开什么药[] a.阿司匹林 b. 牛黄解毒片 c.氟哌酸 d.喝大量的生牛奶 e.以上全不对')  
  22.         printInfo('答案:'+self.Answer3())  
  23.       
  24.     def Answer1(self):  
  25.         return ''  
  26.       
  27.     def Answer2(self):  
  28.         return ''  
  29.       
  30.     def Answer3(self):  
  31.         return ''  
  32.       
  33.           
  34. #学生甲  
  35. class TestPaperA(TestPaper):  
  36.     def Answer1(self):  
  37.         return 'A'  
  38.       
  39.     def Answer2(self):  
  40.         return 'B'  
  41.       
  42.     def Answer3(self):  
  43.         return 'C'  
  44.   
  45. #学生乙  
  46. class TestPaperB(TestPaper):  
  47.     def Answer1(self):  
  48.         return 'B'  
  49.       
  50.     def Answer2(self):  
  51.         return 'D'  
  52.       
  53.     def Answer3(self):  
  54.         return 'E'  
  55.   
  56. def clientUI():  
  57.     a = TestPaperA();  
  58.     a.TestQuestion1()  
  59.     a.TestQuestion2()  
  60.     a.TestQuestion3()  
  61.       
  62.     b = TestPaperB();  
  63.     b.TestQuestion1()  
  64.     b.TestQuestion2()  
  65.     b.TestQuestion3()  
  66.     return  
  67.   
  68. if __name__ == '__main__':  
  69.     clientUI();  

类图:


贴上我自己的代码:

class predict:
    y_pred = []
    def linpredict(self):
        y_pred = linreg.predict(X_test)#注:对于红酒数据,线性回归还是使用非归一化的数据,结果表现更好
        return y_pred

    def plspredict(self):
        y_pred = plsreg.predict(X_test_scaled)#PLS使用归一化的数据,结果要更准确
        return y_pred

    def plscpredict(self):
        y_pred_scaled = plscreg.predict(X_test_scaled)
        return y_pred_scaled


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值