### 面向对象程序设计(C#版)关键知识点总结
#### 一、面向对象思想的核心价值
**四大发明之活字印刷——面向对象思想的胜利**
- **可维护性**:面向对象的设计强调模块化,每个类负责单一职责,这样在修改功能时只需要调整相关的类而不影响其他部分,类似于活字印刷中的替换单个字符。
- **可复用性**:类和方法可以被多个地方重用,减少重复编码的工作量,提高开发效率。
- **可扩展性**:通过继承和组合,面向对象的设计允许在现有基础上轻松地添加新功能,类似于在原有文本上增加新字符。
- **灵活性**:通过接口和多态机制,对象可以在运行时表现出不同的行为,就像活字可以根据需要自由组合一样。
#### 二、代码质量的重要性
**面试受挫——代码无错就是好?**
- **代码无错≠高质量**:仅仅没有语法错误的代码并不意味着它是高质量的。好的代码还需要具有良好的结构、清晰的逻辑以及易于维护的特点。
- **代码规范**:遵循一定的代码规范有助于提高代码的可读性和一致性,便于团队协作。
- **重构**:定期进行代码重构可以优化代码结构,提高其可维护性和可扩展性。
#### 三、复制与复用
**复制VS复用**
- **复制**:简单的复制代码会导致代码冗余,增加后期维护成本。
- **复用**:通过继承、组合等方式实现代码复用,可以显著提高开发效率,并降低维护难度。
#### 四、业务封装
**业务的封装**
- **单一职责原则**:每个类应该只负责一项功能,这样可以减少类之间的耦合度。
- **接口隔离原则**:客户端不应该被迫依赖它不使用的接口。
- **封装变更点**:通过抽象类或接口来封装可能会发生变化的部分,使变更的影响最小化。
#### 五、设计模式的应用
**体会简单工厂模式的美妙**
- **简单工厂模式**:用于创建一系列相关或相互依赖的对象而无需指定它们具体的类,简化了客户端代码。
**工厂不好用了?**
- **工厂方法模式**:提供了一种创建对象的最佳方式,当工厂类的责任加重时,可以采用工厂方法模式来解决。
- **抽象工厂模式**:适用于一组相关或相互依赖对象的创建,且需要独立的变化维度。
**用“策略模式”是一种好策略**
- **策略模式**:定义了一系列算法,并将每一个算法封装起来,使它们可以互相替换,让算法独立于使用它的客户。
**反射——程序员的快乐!**
- **反射**:允许程序在运行时获取类型的信息,并直接访问、修改字段和调用方法。这对于动态加载组件、框架设计等非常有用。
**会修电脑不会修收音机?——聊设计模式原则**
- **开闭原则**:对扩展开放,对修改关闭。意味着当系统需要增加新的功能时,可以通过扩展系统的行为来实现,而不需要修改现有的代码。
- **里氏替换原则**:子类必须能够替换其基类。确保子类可以安全地替换其父类,从而保证程序的稳定性。
**三层架构,分层开发**
- **MVC架构**:模型(Model)、视图(View)和控制器(Controller)三个层次分离,分别处理数据管理、用户界面和控制流程。
- **分层架构**:将应用程序分为表现层、业务逻辑层和数据访问层,各层之间通过接口进行交互,降低耦合度。
**无熟人难办事?——聊设计模式迪米特法则**
- **迪米特法则**:一个对象应当对其他对象保持最少的了解。减少类之间的耦合度,提高系统的灵活性和可维护性。
**有了门面,程序员的程序会更加体面**
- **外观模式**:为子系统中的一组接口提供一个一致的界面,简化了客户端与子系统之间的交互。
**设计模式不能戏说!设计模式怎就不能戏说?**
- **设计模式的学习与应用**:设计模式是解决特定问题的最佳实践,通过学习和正确应用这些模式,可以提高软件的质量和可维护性。
- **创造性地使用设计模式**:虽然设计模式提供了通用的解决方案,但在实际应用中也需要根据具体情况进行适当的调整和创新。
面向对象设计不仅仅是一种编程技巧,更是一种思考问题的方式。通过合理地运用面向对象的原则和设计模式,可以构建出既高效又稳定的软件系统。