面向对象软件设计
2025-02-10 15:44:49 0 举报
AI智能生成
面向对象软件设计是一种流行的范式,它以对象为中心,将数据(对象属性)和操作数据的行为(对象方法)封装在一起。这种设计模式强调继承、封装和多态,以此来模拟现实世界的实体和它们之间的交互。通过使用类(对象的蓝图)和对象(类的实例),开发者可以创建可重用、易于维护和扩展的代码。面向对象设计(OOD)不仅提高代码的组织性,还促进了更好的数据抽象和信息隐藏。它的核心在于使用对象来描述系统中的问题域,并利用继承层次结构来建立概念上的层次关系。面向对象编程(OOP)的语言如Java、C++和Python广泛应用于软件开发,从而实现模块化的设计和清晰的接口定义。文件通常以".h"(头文件)和".cpp"(C++源文件)或".java"(Java源文件)等扩展名保存。
作者其他创作
大纲/内容
好代码
无需大刀阔斧的修改即可扩展。
添加功能很容易,无需撕开它
添加功能很容易,无需撕开它
容易阅读和维护
有很好的文档记录
好的代码使得很难围绕它编写不好的代码
容易测试
容易调试
不包含代码重复
被重用
设计建议
Program to an interface, not an implementation
通过接口实现松散的耦合
更改任何应用程序对象的实现类而不影响调用代码的能力。
这使我们能够参数化应用程序的任何部分,而不破坏其他组件
这使我们能够参数化应用程序的任何部分,而不破坏其他组件
在实现接口方面的完全自由度
能够根据需要提供应用程序接口的简单测试实现和存根实现,
促进对其他类的测试,并使多个团队在就接口达成一致后能够并行工作
促进对其他类的测试,并使多个团队在就接口达成一致后能够并行工作
对象组合优于类继承
模板方法设计模式
IOC
框架设计的基础
Don't call me, I'll call you
框架代码调用用户代码
策略模式
模板方法的另一种选择是策略设计模式,
它将变体行为考虑到一个接口中
它将变体行为考虑到一个接口中
在以下情况下,优先使用策略模式,而不是模板方法模式
当所有步骤变化时
当实现这些步骤的类需要一个独立的继承层次结构时
当这些步骤的实现可能与其他类相关时
当这些步骤的实现可能需要在运行时发生变化时。
具体的继承不能适应这种情况;委托可以
具体的继承不能适应这种情况;委托可以
当这些步骤有许多不同的实现时,
或者当预期实现的数量将继续增加时
或者当预期实现的数量将继续增加时
使用回调来实现可扩展性
观察者设计模式
准守开放关闭原则
合并方法参数
将多个参数封装到一个对象中是一个好主意。
这可能会提高可读性,并简化调用代码
这可能会提高可读性,并简化调用代码
其主要优点是具有灵活性。
我们不需要中断签名来添加进一步的参数:我们可以向参数对象添加额外的属性
我们不需要中断签名来添加进一步的参数:我们可以向参数对象添加额外的属性
异常处理
Checked exceptions extend java.lang.Exception
当异常相当于返回值时使用检查异常
Unchecked or runtime exceptions
extend java.lang.RuntimeException,
and need not be caught (although they can be caught and
propagate up the call stack in the same way
extend java.lang.RuntimeException,
and need not be caught (although they can be caught and
propagate up the call stack in the same way
异常错误码
通过包含带有异常的错误代码,从异常代码中分离出要显示给用户的错误消息。
当需要显示异常时,可以解析代码:例如,从一个属性文件中
当需要显示异常时,可以解析代码:例如,从一个属性文件中
设计原则
使用反射
反射和工厂模式
使用反射实现工厂模式
动态代理和AOP
使用JavaBeans来实现灵活性
PropertyEditor
PropertyChangeListener
VetoableChangeListener
Introspector
通过使用应用程序注册表来避免单例的扩散
application context
它与接口一起工作得很好。
需要“单例”的对象永远不需要知道它们的实现类
需要“单例”的对象永远不需要知道它们的实现类
所有对象都是普通的Java类,并且可以正常地使用继承。
没有静态变量。
没有静态变量。
配置在相关的类之外进行处理,并且完全由框架代码来处理
上下文对象将实现一个接口。这允许不同的实现从不同的来源获取配置,
而不需要更改托管应用程序对象中的代码
而不需要更改托管应用程序对象中的代码
可以支持对“单例”的动态状态更改。
可以刷新上下文,从而改变其所管理的对象的状态
可以刷新上下文,从而改变其所管理的对象的状态
使用上下文对象会打开其他可能性
虽然单例设计模式是不灵活的,但如果这很有用的话,我们可以选择有多个应用程序上下文对象
重构
Error messages
Logging
Documentation
编码标准
SOLID原则
单一职责原则
变化的原因是人
是人带来的变化。
如果你不想让其他人或者你自己感到困惑,
那么请不要把不同的人因为不同的原因关心的代码放在一起
如果你不想让其他人或者你自己感到困惑,
那么请不要把不同的人因为不同的原因关心的代码放在一起
会被同样的原因改变的事情聚集在一起。
把会被多种原因改变的事情分离开。
把会被多种原因改变的事情分离开。
开闭原则
一个软件实体,如类、模块和函数应该对扩展开放,对修改关闭
里氏替换原则
接口隔离原则
依赖倒置原则
高层模块不应该依赖于低层模块,两者都应该依赖于抽象
抽象不应该依赖细节,细节应该依赖于抽象
利特尔法则
0 条评论
下一页