三层体系、设计模式

2022-07-20  本文已影响0人  李霖弢

栈和队列

栈:先进后出
队列:先进先出

三层体系

三层体系是逻辑上的三层,不一定是在三台机器。


设计模式

单例模式

保证在当前进程中,某个类仅有一个实例
注意在 Web Server 等多线程环境中,为防止多个线程同时进入了该实例化方法导致创建了多个实例,应使用线程锁

class RedisClientInstance(object):
    # 线程锁
    _instance_lock = threading.Lock()

    @classmethod
    def get_storage_instance(cls):
        if not hasattr(RedisClientInstance,'_instance'):
            with RedisClientInstance._instance_lock:
                RedisClientInstance._instance = RedisClient(host=CommonConfig.redis_host,
                                                            port=CommonConfig.redis_port,
                                                            password=CommonConfig.redis_password,
                                                            db=CommonConfig.redis_position_db)
        return RedisClientInstance._instance
观察者模式

一对多的依赖关系,当被观察者发生变化时,所有依赖他的对象都会收到通知

观察者模式
生产消费者模式

通过一个容器(队列)实现生产者和消费者(支持多对多)解耦
当容器为空的时候,消费者必须等待,而容器满的时候,生产者必须等待。其他场合可以认为动态平衡。

订阅发布模式

订阅发布模式是一对多的特殊的生产消费者模式,也符合观察者模式。

依赖注入

在类A需要调用类B协助时,不在A中创建B实例,而是依赖于外部的注入,以实现AB类的解耦。

b = B()
a = A(b)
控制反转

控制反转就是把程序执行过程由原来的程序员控制转向由框架来控制,这也是框架与库(lib)最关键的区别。
在别人定义的回调函数中写代码就是一个控制反转的典型场景。

上一篇下一篇

猜你喜欢

热点阅读