zoukankan      html  css  js  c++  java
  • Head First 设计模式-- 总结

    模式汇总:
    装饰者  :包装一个对象以得到新的行为
    状态     :封装了基于状态的行为,并使用委托在行为之间切换
    迭代器  :在对象的结合中游走,而不暴露集合的实现
    外观     :简化一群类的接口
    策略     :封装可以互换的行为,病史用委托类决定要使用哪一个
    代理     :包装对象,以控制对此对象的访问
    工厂方法   :由子类决定要创建的对象是哪一个
    适配器    :封装对象,并提供不同的接口
    观察者    :让对象能够在状态改变时被通知
    模板方法   :由子类决定如何实现一个算法中的步骤
    组合     :客户用一致的方式处理对象集合和单个对象
    单例     :确保有且只有一个对象被创建
    抽象工厂   :允许客户创建对象的家族,而无需指定他们的具体类
    命令     :封装请求成为对象

    用到的设计原则:

    • 封装变化
    • 多用组合少用继承
    • 针对接口编程,不针对实现编程
    • 松耦合
    • 开闭原则(类应该对扩展开放对修改关闭)
    • 依赖抽象,不依赖具体
    • 迪米特原则(只和朋友交谈)
    • 别找我,我会找你
    • 类应该只有一个改变的理由

    模式分类:
    创建型:Singleton,  Builder,   Abstract Factory,  Factory Method,  Prototype
    行为型:Template Method,  Visitor,  Iterator,  Command,  Observer,  State,  Strategy
    结构型:Decorator,  Proxy,  Composite,  Bridge,  Adapter,  Flyweight

    我们使用设计模式的目的是为了让我们的代码更简单,让以后更容易扩展。使用设计的模式的时候,一定会比不使用设计的代码更复杂,因此,对于一些没必要使用设计模式的地方,就不要使用设计模式。像一些以后不会修改的地方,不会扩展的地方,直接写就可以了,不要增加冗余的代码来增加什么设计模式。一段有设计模式的代码更从其他人的角度来看更加难理解。在使用设计模式的时候一定权衡好,时刻记住一点,我们使用设计模式只是为了增加我们以后的扩展性。还有,在写完一段代码的时候,想想怎么可以重构一下简化代码,实际上,写程序的逻辑应该只是写完这段代码花的时间最少的一部分,更多的时间应该是整理代码,能重用的就重用。

    写代码的时候记住那些设计原则就能帮助我们写出优秀的代码。

    读后感:这篇文章是读完这本几天后写的,在一开始看的时候,肯定是看到哪个模式的时候已经把这个模式自我感觉看透了,但是现在在回头想想,能像一开始那样记住的并不剩几个了,给我的感觉其实并不必要去死记硬背一些什么模式改怎么写,主要在脑子里有一些设计模式的概念,在碰到问题的时候,先从脑子搜索一下哪个模式能解决类似的问题,到那时候在去找也可以,如果从设计原则出发开始思考问题,也许到时候不知不觉的就发现,原来这个地方我还用到了设计模式。所以,这本给我最大的收益就是让我记住了那些设计原则,在写代码的时候能先从设计原则出发思考问题。并没有强求硬要写什么模式,模式只是为了以后扩展方便,如果你都不知道哪个地方以后会扩展,那在第一次就写那么复杂的代码干什么,想让别人知道自己多NB?如果知道了这个地方以后一定会有扩展,那么,一定要想好用哪个设计模式,这种时候才是应该用设计模式的地方。这本书后面还面还有几个模式,这里也就不写了,抓住重点就可以了。

  • 相关阅读:
    tornado之获取参数
    tornado中命名路由及反向解析使用
    options模块介绍
    服务的启动
    redis操作
    python中使用redis模块, 设置过期时间
    LaTeX
    word 摘要
    常用命令
    机器学习的建议
  • 原文地址:https://www.cnblogs.com/badboyf/p/6247293.html
Copyright © 2011-2022 走看看