程序封装思想和常见原则
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
运算速度快 选用时间空间复杂度更好的算法,避免常见 的性能陷阱
性能良好
占用资源少 更好的抽象,选用更加适合的方案,数据 结构,类定义等
维护容易
快速调整和纠错能力 分治-清晰的模块化 解耦-每个模块各司其责,避免相互接触 明确的输入和输出
较多不同类型的输入和不同类型的输出,如果发生要分解
结构型模式:
–
行为型模式:
–
UML 包库 类图 流程图 用例图
四,实例讲解
MouseListener KeyListener
谢谢!
充分考虑输入情况,避免流程中途出现crash, 清晰的输入和输出情况,避免缺漏 自动化的单元测试,确保基线功能完备
二,回到代码层面
对代码抽象,把握其关节
对代码的理解
变量 表达式 方法 类 包模块 多个包组成的jar 软件产品
它们的共性抽象
代码可以视为“数据 + 逻辑” 逻辑抓牢 “输入 + 输出”
程序封装思想和常见原则
jacky 2015-1-16
一,从软件工程层面说起
对开发工程师来说,开发上的多方面的要求,主 要来自于软件工程的需求。软件工程要求,在预 定的时间内,推出来相应更好的产品。
开发视角什么是更好的产品?
性能良好 维护容易 扩展方便 复用性好 健壮性好
性能良好 目标:马儿跑得快,马儿不吃草
接口隔离原则 接口的方法要尽可能的少 是小接口 避免万金油接口
六,模式与设计模式
模式
《圣经》There is no new thing under the sun 太阳底下 没有新鲜事,历史会重演,体会模式使用模式。 波浪上升,螺旋发展等全息模型下,产生了包罗万象 的模式如图仔细体会身边的事务,不断的在重演,跟 一天24小时时钟 的运转非常的相似。
全覆盖的log
出现问题,快速重现和追踪
扩展容易
事情之初,管理好差异性,让新增加功能变得 容易,尽可能的只做差异性支持的新增,避免 原先功能的改动。
复用性良好
重复的事情尽可能只做一遍,抽象共性。 避开差异性陷阱通用接口的模块化,通过差异 性和共性分析提取接口。 熟习设计模式
健壮性好
三,面向过程与面向对象
根本性的区别点
–
ห้องสมุดไป่ตู้
有没有对象思维
有没有隔离封装 有没有角色抽象
思考方法
考虑这应该是谁的数据? 考虑这应该是谁的逻辑? 考虑这应该不应该形成对象? 考虑这应该形成什么样的对象?
指导思想
通过数据+逻辑的封装,形成对象的自维护, 进而达成大问题的良好分治。
四,代码常见问题
自然的模式
自然界的模式
自然界的模式
自然界的模式
自然界的模式
为什么会有这些不为人知的模式?
数学规律
软件模式
设计模式
《Gof23设计模式》 创建型模式:
–
单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。 适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理 模式。 模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录 模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式。
类同代码 纯过程式代码 杂乱缺乏封装 复用性不好 代码耦合 硬编码,魔数 过大的类和方法
五,设计原则与模式
单一职责原则 类和接口职责单一
开放封闭原则 对修改关闭对扩展开放 isA 继承 hasA 合成/聚合
里氏替换原则 可以通过接口来调用子类
设计原则与定式
依赖倒置原则 依赖底层的接口