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

    # 开发设计【阅读,《Head First 设计模式》】


    > http://wickedlysmart.com/headfirstdesignpatterns/code.html

    分类是为了更抽象地思考和组合东西,也是为了更好总结和分析,同时在交流中有了一个公共的词汇,方便交流意见;也使得在一个小范围内比较和搜索,简化问题的维度

    对象创建 方法行为 关系结构

    原则:
    封装变化属性
    少用继承,多用组合
    针对组合接口(未实现的函数方法)编程,不针对具体实现(包含具体的类,在创建具体类时被绑定)编程
    为交互对象实现松耦合的设计
    多拓展开放,对修改关闭(属性和细节隔离)

    模式:
    观察者模式(松耦合,建立一对多的依赖) 主题 与 订阅者

    装饰者模式(利用装饰类包装原始类,实现类的修改和扩展,在实际运行和需求中拓展属性和内容)--- 主体 加 配料 【考虑类型问题,多层装饰的嵌套问题】
    行为可以被拓展,装饰者类型与装饰的组件 类型一样

    工厂模式(将变化的部分,具体类与对象实现的部分,提取出来,放在一个模块或函数中;用户可不考虑具体实现直接调用,而实现由子类完成)
    此中可能涉及多个类的平行交互关系,封装过程就是将具体的实现推移到具体子类,而子类中直接加入其他具体子类的实例,达到交互内容
    创建对象的代码几种放在一个对象或者方法中

    单件模式(只实例化一个对象,用于管理共享资源等,构造函数是私有的,利用静态函数【类方法】来调用构造函数实例化,且有全局访问点)
    在多线程时,考虑加锁与同步

    适配器模式(将一个类的接口转换成另一个)

    外观模式(提供系统统一的公共接口,使之可以直接访问子系统的内容)

    状态模式(有限状态机实现具体状态转换)

    代理模式(利用java中的RMI,实现不同端的通信或虚拟一个对象代理控制原对象,实现代理过滤一些访问)

    不同类型需要有树状关系,可以统一两者到一个公共类

    系统维护,拓展,分析

          ---不变的(是一个)
         |
         |
    抽象对象 -- 属性 --- -- 属性获取与修改 setattr 与 getattr
    |                  |
    |                  |
    方法     ---   可变的(有一个)
    (如行为) <---- 接口 ---> 多态实现


    对象封装,利用接口进行拓展,并建立接口使之功能被其他对象利用【对象之间的独立的,相互不了解具体实现,相互依赖降低,提高代码弹性】

    事件监听lisen --- 事件信号signal --- 事件响应respond
    |                                                                               |
    具体观察者实现观察 具体主题类对接口进行具体实现

    # 项目分解
    项目要求 --- 项目数据 --- 用户操作
     |                       |                       |
     |                       |                       |
    V                     V                      V
    实现模块 --- 数据获取 --- 用户界面


    ** 具体问题 ---> 类 与 方法 --- 具体描述
    ** 适用场合
    ** 建立类图(明确几个类以及其属性,建立各个类之间的关系,各个接口的) ---> 预估可能的效果
    ** 具体实现 --- 规范代码编写
    ** 输入输出
    ** 类似参考

  • 相关阅读:
    [LeetCode179]Largest Number
    [LeetCode27]Remove Element
    [LeetCode238]Product of Array Except Self
    [LeetCode169]Majority Element求一个数组中出现次数大于n/2的数
    [LeetCode202]Happy Number判断一个数是不是happy number
    [LeetCode283]Move Zeros将一个数组中为0的元素移至数组末尾
    [LeetCode136]Single Number寻找一个数组里只出现一次的数
    iOS 9: UIStackView入门
    优化UITableViewCell高度计算的那些事
    AutoLayout深入浅出五[UITableView动态高度]
  • 原文地址:https://www.cnblogs.com/joeat1/p/11354544.html
Copyright © 2011-2022 走看看