zoukankan      html  css  js  c++  java
  • 设计模式

    设计模式

    创建型模式(工厂/单例)
    工厂模式(Factory):解决对象创建问题

    解决对象创建问题
    解耦对象的创建和使用
    包括工厂方法和抽象工厂

    构造模式(Builder):控制复杂对象的创建
    用来控制复杂对象的构造
    创建和表示分离。比如你要买电脑,工厂模式直接给你需要的电脑
    但是构造模式允许你自己定义电脑的配置,组装完成后给你

    原型模式(Prototype):通过原型的克隆创建新的实例(无代码演示)
    可以使用相同的原型,通过修改部分属性来创建新的实例
    用途:对于一些创建实例开销比较高的地方可以用原型模式

    单例(Borg/Singleton):一个类只能创建同一个对象(非常重要)
    python的模块其实就是单例的,只会导入一次
    使用共享同一个实例的方式来创建单例模式
    class Singleton:
    def __new__(cls,*args,**kwargs):
    if not hasattr(cls, '_instance'):
    _instance = super().__new__(cls,*args,**kwargs)
    cls._instance = _instance
    return cls._instance

    class MyClass(Singleton):
    pass


    c1 = MyClass()
    c2 = Myclass()
    assert c1 is c2

    对象池模式(Pool):预先分配同一类型的一组实例
    惰性计算模式(Lazy Evaluation):延迟计算(python的property)

    结构型模式
    装饰器模式:无需子类化扩展对象功能

    代理模式:把一个对象的操作代理到另一个对象
    Stack/Queue,把操作代理到deque
    通常使用has-a组合关系

    适配器模式:通过一个间接层适配统一接口
    想象一个多功能充电头,可以给不同的电器充电,充当了适配器
    当我们需要给不同的对象统一接口的时候可以使用适配器模式

    外观模式:简化复杂对象的访问问题
    享元模式:通过对象复用(池)改善资源利用,例如连接池
    MVC:解耦展示逻辑和业务逻辑

    行为型模式
    迭代器模式:通过统一的接口迭代对象
    python内置对迭代器模式的支持
    可以用for遍历各种Iterable的数据类型
    python里可以实现__next__和__iter__实现迭代器

    观察者模式:对象发生改变的时候,观察者执行相应动作
    发布订阅是一种最常见的实现方式
    发布订阅用于解耦逻辑
    可以通过回调等方式实现,当发生事件时,调用响应的回调函数

    策略模式:针对不同规模输入使用不同的策略
    比如买东西超过10个打八折,超过20个打七折
    对外暴露统一的接口,内部采用不同的策略计算

  • 相关阅读:
    如何在Windows 10 IoT Core中添加其他语言的支持,如中文
    交易应用及网站驱动不兼容Windows 10的解决方案
    五步轻松实现对现代浏览器的兼容
    在Windows 10中开启开发者模式
    Modern.IE,创建现代网站的给力开发工具!
    Visual Studio的 Apache Cordova 插件CTP3.0发布!
    什么开发?什么是编程语言?你能学吗?你能做吗?
    IT'S NOT A JOKE!一篇博客让你玩转IT领域!你说我吹NB?请进来跟着浪一浪
    python为什么慢?
    编译错误 expected class-name before ‘{’ token
  • 原文地址:https://www.cnblogs.com/muzinan110/p/11149187.html
Copyright © 2011-2022 走看看