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个打七折
    对外暴露统一的接口,内部采用不同的策略计算

  • 相关阅读:
    MyEclipse和Microsoft Visual Studio常用快捷键
    数据源与JNDI资源实现JSP数据库连接池实例
    Tomcat配置+JSP页面模板修改UTF-8
    jquery插件
    jsp地址栏传中文显示乱码解决方法
    Java Web Project自定义错误页面,log4j记录日志。
    [原创] Java JDBC连接数据库,反射创建实体类对象并赋值数据库行记录(支持存储过程)
    测试上传图片
    js获取日期:昨天今天和明天、后天
    Axure谷歌浏览器Chrome扩展程序下载及安装方法
  • 原文地址:https://www.cnblogs.com/muzinan110/p/11149187.html
Copyright © 2011-2022 走看看