zoukankan      html  css  js  c++  java
  • 设计模式【笔记】

    设计模式【笔记】

    设计模式

    设计模式历史发展

    最早出来的时候是篇博士论文,后出版成了书,不好读,难懂

    然后遇到了语言的限制

    在后面这段时间中,增加了很多的模式,比如并发模式,架构模式等等

    Singlethon优缺点

    确保全局至多只有一个对象,主要适用于构造缓慢的对象,需要统一管理的资源

    缺点也很明显,很多的全局状态,很难维护,线程的安全性也不好保证

    singleton的创建

    双重锁模式double checked locking

    利用系统自带的能力,比如作为java类的静态变量,但是也有一些缺点,必须要在初始化的时候创建,中途创建可能产生冲突

    因此可以使用框架提供的能力

    变继承关系为组合关系

    继承关系的不好之处

    描述了is-a的关系,这个关系是比较不稳定的,能力为重,而不是关系为重

    不要用继承关系来实现复用,会有局限性,要使用设计模式来实现代码复用

    如果employee升级成了manager,可能就会因为继承的is-a关系而调用不到正确的dowork

    state模式优缺点

    封装了转换规则,比较方便,同时其枚举可能的状态,不过在枚举状态之前需要确定状态种类,而且将所有与某个状态有关的行为放到一个类中,并且可以方便地增加新的状态,只需要改变对象状态即可改变对象的行为

    state模式还允许状态转换逻辑与状态对象合成一体,还可以让多个环境对象共享一个状态对象,从而减少系统中对象的个数

    但是,state模式的使用必然会增加系统类和对象的个数,而且由于state模式的结构与实现都较为复杂,如果使用不当将导致程序结构和代码的混乱,同时,state模式对"开闭原则"的支持并不太好

    decorator模式(装饰模式)

    属于结构型模式,说白了就是想增加一个新的功能给现在已经有的对象,但是又不想改变结构的一种方法,顾名思义就是装饰

    如何创建对象

    使用new来创建对象的缺点

    编译时必须决定创建哪一个类的对象

    参数意义不明确

    解决问题

    可以使用abstract factory pattern来解决类的对象的问题

    使用builder pattern来解决参数意义不明确的问题

    不可变对象往往需要配合builder使用

    感谢观看,文笔有限,博客不出彩,还请多多见谅
  • 相关阅读:
    流程控制语句
    lminus
    TCL create list from file
    DFT 问答 III
    DFT 问答 II
    DFT 问答 I
    猜字符小游戏
    用户模式构造
    基元线程同步构造
    七大原则,24种设计模式
  • 原文地址:https://www.cnblogs.com/jokingremarks/p/14474091.html
Copyright © 2011-2022 走看看