知识储备:

1.接口:若干抽象方法的集合

  作用:限制实现接口的类必须按照接口给定的调用方式实现这些方法;对高层模块隐藏了类的内部实现。

2.面向对象设计SOLID原则

  • 开放封闭原则:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。
  • 里氏替换原则:所有引用父类的地方必须能透明的使用其子类的对象。
  • 依赖倒置原则:高层模块不应该依赖底层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。换言之,要针对接口编程,而不是针对实现编程。
  • 接口隔离原则:使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口。
  • 单一职责原则:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责某一项职责。

3.设计模式分类

创建型模式(5种):工厂方法模式、抽象工厂模式、创建者模式、原型模式、单例模式

结构型模式(7种):适配器模式、桥模式、组合模式、装饰模式、外观模式、享元模式、代理模式

行为型模式(11种):解释器模式、责任链模式、命令模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、访问者模式、模板方法模式

 

1、简单工厂模式

内容:不直接向客户端暴露对象创建的实现细节,而是通过一个工厂类来负责创建产品类的实例。

角色:

  • 工厂角色(Creator)
  • 抽象产品角色(Product)
  • 具体产品角色(Concrete Product)
from abc import ABCMeta, abstractmethod

class Payment(metaclass=ABCMeta):
    # abstract class
    @abstractmethod
    def pay(self, money):
        pass


class Alipay(Payment):
    def __init__(self, use_huabei=False):
        self.use_hubei = use_huabei

    def pay(self, money):
        if self.use_hubei:
            print("花呗支付%d元" % money)
        else:
            print("支付宝余额支付%d" % money)


class Wechat(Payment):
    def pay(self, money):
        print("微信支付%d元" % money)


# 工厂类
class PaymentFactory:
    def create_payment(self, method):
        if method == 'alipay':
            return Alipay()
        elif method == 'wechat':
            return Wechat()
        elif method == 'huabei':
            return Alipay(use_huabei=True)
        else:
            raise TypeError("No such payment named %s" % method)


# client
pf = PaymentFactory()
p = pf.create_payment('huabei')
p.pay(100)


## 
工厂角色: PaymentFactory
抽象产品角色:Payment
具体产品角色:Alipay,WechatPay
View Code

相关文章:

  • 2021-06-27
  • 2021-04-21
  • 2021-10-13
  • 2021-10-16
猜你喜欢
  • 2021-08-07
  • 2022-12-23
  • 2022-12-23
  • 2021-12-12
  • 2022-12-23
  • 2022-12-23
  • 2021-12-22
相关资源
相似解决方案