JAVA面向接口编程 | 面向实现编程 | 面向对象编程 | 面向过程编程 | python面向抽象编程

面向接口编程:

原本是JAVA语言中的概念,与之相对应的概念是面向实现编程。不知道大家有没有接触过Spring,Spring的一个重点是要求业务和实现分离,那么面向接口编程的精髓也正是符合spring这一要求。

另外,在解释一个与上述两个概念容易混淆的概念:面向对象编程与面向过程编程相对应,两者才是一个层面。

 

在python语言中虽然没有接口的概念,但是也可以用抽象类实现面向接口编程的功能。

下面以实现动物叫为例展示代码:

class Animal(object):

    def __init__(self):
        self.animal = None

    @abstractmethod
    def sing(self):
        pass

    def print_sing(self):
       self.animal.sing()

    def set_animal(self, obj):
        self.animal = obj


class Dog(Animal):
    def sing(self):
        print('汪汪汪')


class Cat(Animal):
    def sing(self):
        print('喵喵喵')


animal = Animal()
animal.set_animal(Cat())
# animal.set_animal(Dog())
animal.print_sing()

当然,还有一种写法:

from abc import ABCMeta,abstractmethod

class Animal(metaclass=ABCMeta):

    @abstractmethod
    def sing(self):
        pass


class Dog(Animal):
    def sing(self):
        print('汪汪汪')


class Cat(Animal):
    def sing(self):
        print('喵喵喵')


animal = Dog()
animal.sing()

这样做的好处就是,在以后的代码迭代的过程中,代码风格统一,代码更容易维护,无论是哪个程序员来写代码,都必须实现基类中的抽象方法sing(),结果就是每个人写出来的代码结构都一样。

写法1还有一个好处:当新加子类对象比如鸭子、老虎等,不需要在修改业务层代码就可以实现新功能的添加。

 

 

 

 

 

 

 

你可能感兴趣的:(开发模式)