可维护性的常见度量指标
可维护性:易于修改软件系统和组件来更正
可扩展性
灵活性
可适应性:交互式系统(自适应系统)的能力,它可以根据所获得的关于用户及其环境的信息来适应个人用户的行为
可管理性
支持性
高内聚,低耦合:要尽量避免其与其他类型的许多相互依赖而难以复用和维护的设计
圈复杂度
代码行数:重复代码的行数
继承的层次数
类之间的耦合度
单元测试的覆盖度
聚合度和耦合度
聚合:如果一个模块的所有元素都在朝着同一目标工作,那么它就具有高度的凝聚力
耦合:两个类之间的依赖程度;
主要取决于接口个数和接口的复杂程度
SOLID
单一职责原则(SRP):一个类应该只有一个职责,即一个类只负责一种行为或功能,从而提高代码的可读性、可维护性和可测试性。
OCP,开放-封闭原则:一个软件实体(类、模块等)应该对扩展开放,对修改关闭。即当需要添加新功能时,应该通过扩展已有代码来实现,而不是修改已有代码,从而避免对原有代码的影响。
LSP:子类应该能够替换其父类并且不影响系统的正确性。即在任何父类可以出现的地方,子类都可以出现。
ISP,接口聚合原则:一个类不应该强制实现它不需要的接口,即一个接口应该只包含客户端需要的方法。这样可以避免代码的冗余和臃肿。胖接口可分解为多个小的接口;不同的接口向不同的客户端提供服务;客户端只访问自己所需要的端口。
DIP,依赖置换原则:高层模块不应该依赖底层模块,它们应该依赖于抽象接口。即高层模块应该依赖于抽象,而不是具体的实现。这样可以提高系统的可扩展性和可维护性。
语法、正则表达式
在本课程里,只需要能够熟练掌握正则表达式regex这种“基本语法” ,并熟练使用JDK提供的 regex parser进行数据处理即可
Pattern是对regex正则表达式进行编译之后得到的结果
Matcher:利用Pattern对输入字符串进行解析
第十一章 设计模式
设计模式
工厂方法
工厂方法模式把具体产品的创建推迟到工厂类的子类(具体工厂)中,此时工厂类不再负责所有产品的创建,而只是给出具体工厂必须实现的接口,这样工厂方法模式在添加新产品的时候就不修改工厂类逻辑而是添加新的工厂子类,符合对修改封闭,对扩展开放
定义一个用于创建对象的接口,让其子类来决定实例化哪一个类,从而使一个类的实例化延迟到其子类
适配器模式 adaptor
通过增加一个接口,将已存在的子类封装起来,client面向接口编程,从而隐藏了具体子类。
装饰器模式 decorator
每个子类实现不同的特性,且需要有特性的任意组合
装饰器模式同时用到继承和委派
自己委派给自己
Decorator&继承
decorator是在运行的时候实现的
继承是在编译的时候实现的
decorator可以将多种特性组合起来,由多个对象组合在一起
继承生成一个单一、类型清晰的对象
Strategy模式
有多种不同的算法来实现同一个任务,但需要客户端根据需要动态切换算法,而不是写死在代码里
此时就可以为不同的实现算法构造抽象接口,利用delegation,运行时动态传入client倾向的算法类实例
由客户端来选择具体用哪种算法
模板模式 temple
做事情的步骤一样,但具体方法不同;共性的步骤在抽象类内公共实现,差异化的步骤在各个子类中实现
Iterator模式
客户端希望遍历被放入容器/集合类的一组ADT对象,无需关心容器的具体类型
visitor模式
对特定类型的object的特定操作(visit),在运行时将二者动态绑定到一起,该操作可以灵活更改,无需更改被visit的类
本质上:将数据和作用于数据上的某种/些特定操作分离开来
为ADT预留一个将来可扩展功能的“接入点”,外部实现的功能代码可以在不改变ADT本身的情况下通过delegation接入ADT
Visitor & strategy
之前没有想到的临时要补充的方法,可以扩展到visitor子类型中
需要频繁更改之前实现的东西,又要兼顾OCP时,可以使用strategy设计模式
标签:复习,实现,子类,代码,软构,接口,工厂,客户端 From: https://www.cnblogs.com/777-Song/p/17435736.html