首页 > 其他分享 >设计模式-行为型模式之模板方法

设计模式-行为型模式之模板方法

时间:2022-10-09 22:22:24浏览次数:52  
标签:__ abc self 模式 抽象 模板 基类 设计模式 def

定义抽象基类,规范接口内部方法执行顺序

在进阶篇中,没专门提过抽象基类,在这里顺便就提一下

  抽象基类的核心特征:不能被直接实例化

  相反,抽象基类和元类一样,一般都被当做顶层基类使用,派生类必须实现抽象类中指定的方法,且方法名也必须保持一致

  抽象基类的主要用途:从一种高层次上规范编程接口

话不多说,直接上代码

 1 import abc
 2 
 3 
 4 class Template(metaclass=abc.ABCMeta):
 5     @abc.abstractmethod
 6     def pre(self):
 7         ...
 8 
 9     @abc.abstractmethod
10     def execute(self):
11         ...
12 
13     def func(self):
14         """定义内部接口执行顺序"""
15         self.pre()
16         self.execute()
17 
18 
19 class Valley(Template):
20     def pre(self):
21         print("预执行")
22 
23     def execute(self):
24         print("正式执行")
25 
26 
27 if __name__ == '__main__':
28     Valley().func()

output:

  预执行
  正式执行

标签:__,abc,self,模式,抽象,模板,基类,设计模式,def
From: https://www.cnblogs.com/shixiaogu/p/16773909.html

相关文章

  • 抽象工厂模式C++
    [实验任务一]:人与肤色使用抽象工厂模式,完成下述产品等级结构:   #include<iostream>usingnamespacestd;//抽象产品类——Man类classMan{public:vi......
  • 建造者模式java
    [实验任务一]:计算机组装使用建造者模式,完成下述任务:计算机组装工厂可以将CPU、内存、硬盘、主机等硬件设备组装在一起构成计算机,计算机的类型可以是笔记本,也可以是台式机......
  • 建造者模式C++
    [实验任务一]:计算机组装使用建造者模式,完成下述任务:计算机组装工厂可以将CPU、内存、硬盘、主机等硬件设备组装在一起构成计算机,计算机的类型可以是笔记本,也可以是台式机......
  • 原型模式C++
    [实验任务一]:向量的原型用C++完成数学中向量的封装,其中,用指针和动态申请支持向量长度的改变,使用浅克隆和深克隆复制向量类,比较这两种克隆方式的异同。#include<iostre......
  • 02@Docker网络介绍及网络模式的使用
    文章目录​​Docker网络的介绍​​​​一、Docker网络原理​​​​1、docker网络介绍​​​​2、Docker网络原理​​​​二、docker网络基础​​​​【网络命名空间】​​​......
  • 单例模式
    publicclassSingleton{privatestaticclassSingletonHolder{privatestaticfinalSingletonINSTANCE=newSingleton();}privateS......
  • 面试官:工厂方法模式是什么?
    真正的大师永远怀着一颗学徒的心吃不了学习的苦就要吃生活的苦文章持续更新,可以微信搜索【小奇JAVA面试】第一时间阅读,回复【资料】更有我为大家准备的福利哟!回复【项目......
  • Java设计模式 —— 组合模式
    9组合模式9.1组合模式概述CompositePattern:组合多个对象形成树形结构以表示具有部分-整体关系的层次结构。组合模式使得客户端可以统一处理单个对象和组合对象。......
  • 3 设计模式-建造者模式
    建造者模式在现实生活中如果我们需要制造一个比较复杂的东西,比如手机,台式电脑,或者汽车等。如果我们要制造一台电脑的话我们会先将电脑所需的各个部件买回来然后在组装起......
  • P3387 【模板】缩点
    P3387我的做法就是将原图缩点,得到一个DAG新图,在新图上进行DP求最长路径。1#include<bits/stdc++.h>2usingnamespacestd;3constintN=1e5+10;4intn,......