Day8 接口与归一化设计

接口:在程序的使用中,我不能把程序的主体直接提供给使用者,通常是提供一个接口。

为何要使用接口:java

  

   1,接口提取了一群共同的函数,能够把接口当作一个函数的集合。python

   2,让子类去实现接口中的函数。git

 

归一化的好处:github

  归一化让使用者无需关心对象的类是什么,只须要知道这些对象都具有什么功能就能够了。设计模式

  归一化使得高层的外部使用者能够不加区分的处理全部接口兼容的对象集合。函数

 

 

继承的两种用途:ui

一:继承基类的方法,而且作出本身的改变或者扩展(代码重用):实践中,继承的这种用途意义并不很大,甚至经常是有害的。由于它使得子类与基类出现强耦合。spa

二:声明某个子类兼容于某基类,定义一个接口类(模仿java的Interface),接口类中定义了一些接口名(就是函数名)且并未实现接口的功能,子类继承接口类,而且实现接口中的功能.net

 

 

模拟接口的两种方式:设计

1,使用模块

  在python中根本就没有一个叫作interface的关键字,若是非要去模仿接口的概念

  能够借助第三方模块:

  http://pypi.python.org/pypi/zope.interface

  twisted的twisted\internet\interface.py里使用zope.interface

  文档https://zopeinterface.readthedocs.io/en/latest/

  设计模式:https://github.com/faif/python-patterns

 

2,用抽象类来模拟

 1 class Interface:#定义接口Interface类来模仿接口的概念,python中压根就没有interface关键字来定义一个接口。
 2     def read(self): #定接口函数read
 3         pass
 4 
 5     def write(self): #定义接口函数write
 6         pass
 7 
 8 
 9 class Txt(Interface): #文本,具体实现read和write
10     def read(self):
11         print('文本数据的读取方法')
12 
13     def write(self):
14         print('文本数据的写方法')
15 
16 class Sata(Interface): #磁盘,具体实现read和write
17     def du(self):
18         print('硬盘数据的读取方法')
19 
20     def write(self):
21         print('硬盘数据的写方法')
22 
23 class Process(Interface):
24     def read(self):
25         print('进程数据的读取方法')
26 
27     def xie(self):
28         print('进程数据的写方法')
29 
30 
31 
32 t=Txt()
33 s=Sata()
34 p=Process()
35 
36 
37 t.read()
38 s.read()
39 p.read()
相关文章
相关标签/搜索