• 一般常用设计模式及原则的思想小结


    前言:整体思路还是面向对象(OOA/D/P),封装、继承、多态。

    设计原则:SOLID(来自敏捷软件开发,还几个关于包什么的就略了)

    S,单一职责功能

    O,开闭型,即开放扩展&封闭变化。体现一般为加类等

    L,李氏替换,子类能完全替换父类

    I,接口分离

    D,依赖倒置,即低层、高层&具体依赖抽象。体现一般为接口编程

    PS,有次面试说IOC与DI区别,我认为简单,就直接回答其实一样。随后就被说我还有没要问的。。。晕菜!

    TMD,一看就是个葱,要细说明讲就是

    IOC:控制反转,主要就是相对传统先创建要依赖对象顺序,IOC控制先创建自身再创建(设置)要依赖对象;

    DI:依赖注入(注,不是SOLID的D,但也是其思想的一点体现),就是设置依赖对象关系的过程;

    好像还要什么

    组合/复合原则,其实就是最好不用继承实现复用

    迪米特原则,其实就是能不直接作用(知道)最好,像中介者模式(也叫调停者模式)就是,其实属性通过get&set的封装也是

    至于横向的高层的MV-X(MVC、MVP、MVVM等)更应说是架构模式,以后再另起一遍写一些常用架构模式概念和应用。

    再补充几个OO基本原则(算是总结吧)

    1.KISS,保持简单,即简约而不简单---这个很基础,很重要!!但很多喜欢显摆Coder的代码就N复杂、或动下就设计模式什么的。

    2.DRY,不自我重复,即抽取公共于一处避免重复。

    3.TDA,告知而不是询问,就是明确(告知)别人要做什么,他们自行去做,而不是根据(询问)情况判断后做什么。

    这样要求合理封装,主要是职责和界限清晰!这个可能很多人不理解,再说俗点,就是告诉你们该干嘛干嘛去。

    4.YAGNI , 这个就是不要过度设计---这我喜欢,该简单就多简单,就像我的文章,点到为止!

    5.SOC,分离功能点,主要是让代码、功能、模块重用

    对常用的十来个设计模式的小结:

    1.单例:就是总是只能获得(创建的)那一个事例

    2.工厂方法:就是用个工厂的实例化对象

    3.抽象方法:就是连工厂都是抽象的,用于实例化以系列的对象

    4.迭代器:封装集合,提供对外迭代访问

    5.组合模式:内部加入其他对象,再用之在内部处理对外的方法实现

    6.装饰者:不停给自身添加不同东西处理

    7.模版:父类定义模版,子类照做

    8.策略:替换不同封装的处理算法

    9.代理:封装创建(要获取)对象的过程,以封装者提供出来。其中动态代理就是不指定具体代理类型

    10.观察者:加减观察者,变化则通知他们

    11.适配器:就是翻译成相同接口

    12.责任连:就是处理完自身,设置下个对象

    13.状态:和责任连类似,只是不是下个对象,而是处理同时时修改状态

    14.外观:封装内部,一致对外

    15.原型:就是copy对象

    其他好像没有这么用过,其实设计模式是死得,就像单例,用像dictionary、map这样kv也是可以实现同样效果就行,

    灵活熟练和思想才是真是主要。而且不一定要用的!

    还有几个用过,差点忘了。。。好像就没几个没用过了的了~呵呵

    16.享元模式:为避免大量重复开销而用,而其原理就是用个内部池子共享相同元素。可以说经常用到的,只是不起眼。

    17.解析器:就是根据语义不同做不同解析,也就是构建不同表达式去解析该上下文。用过lambda表达式树做ORM就应该知道的。

    18.命令:这个是个典型。其实就是封装具体执行者,由接受者根据不同命令对象设置执行队列,并根据情况控制执行。

    哦,补充一个抽象类与接口的不同,最主要就是接口强调协定对外功能(想下C#接口能包含什么,他们关系怎样就知),

    而抽象类强调对内族群;其他语法上的什么单多实现继承等区别都不是个菜!

    若转载,请注明@jiyilee.cnblogs.com 珍惜生活,努力工作!!!
  • 相关阅读:
    12 购物车之一(用列表)
    centos7安装pycharm,并创建桌面快捷方式
    centos7安装xrdp
    centos7 安装gitlab
    mysql 新建用户和授权
    django项目连接mysql没有Mysqldb解决办法_使用pymysql代替
    selenium+python实现查询和下载文件
    Python3-使用Requests和正则表达式爬取猫眼Top100的数据
    python3-字典常用操作
    python3-列表常用操作
  • 原文地址:https://www.cnblogs.com/jiyilee/p/4903286.html
Copyright © 2020-2023  润新知