面向对象 面向对象是Java编程中最核心的思想,基本特征:继承、封装、多态 。特征之封装 将结构、数据、操作封装在对象实体中,使用时可以不关注对象内部结构,只能访问开放权限的功能入口,从而降低耦合程度一、面向对象面向对象是Java编程中最核心的思想,基本特征:继承、封装、多态 。
1、特征之封装【Java进阶 | 从整体上观察面向对象】将结构、数据、操作封装在对象实体中,使用时可以不关注对象内部结构,只能访问开放权限的功能入口,从而降低程序耦合程度,提供安全性和可持续维护性 。
public class Concept01 {public static void main(String[] args) {Student student = new Student("张三","高三",29f);student.conclusion();}}class Student {private String name ;private String grade ;private Float score ;public Student(String name, String grade, Float score) {this.name = name;this.grade = grade;this.score = score;}public void conclusion (){System.out.println("姓名:"+this.getName());System.out.println("年级:"+this.getGrade());System.out.println("分数:"+this.getGrade());if (this.getScore() >= 100.0f){System.out.println("评语:本学期优等生");} else {System.out.println("评语:本学期潜力股");}}}案例描述Student的学期总结,通过构造方法构建具体的学生对象,并且只通过conclusion方法获取学生学期评价 。
2、特征之继承子类除了提供自身的能力之外,还可以通过继承的方式获取父类开放的属性和方法,以增强自身的功能 。
public class Concept02 {public static void main(String[] args) {// 判断 Digital 是 Phone 父类System.out.println(Digital.class.isAssignableFrom(Phone.class));}}class Digital {}class Phone extends Digital{}这里通过isAssignableFrom方法判断Digital是Phone父类 。
3、特征之多态不同主体类对同一个动作给出不同的实现方式,多态也是Java描述设计模式的常用手段,最直接的作用就是程序解耦 。
public class Concept03 {public static void main(String[] args) {Animal animalDog = new Dog();Animal animalCat = new Cat();animalDog.voice();animalCat.voice();}}class Animal {public void voice () {System.out.println("Animal ... voice");}}class Dog extends Animal {@Overridepublic void voice() {System.out.println("Dog ... Wang wang");}}class Cat extends Animal {@Overridepublic void voice() {System.out.println("Cat ... Meow meow");}}通常动物都有发出声音的能力,但是不同动物声音不同,这里基于多态实现,不同动物的声音特征 。
二、关系图谱在了解面向对象之后,还需要理解一下基础的关系模型,在实际的业务中都是基于这些基础的关系解决场景问题 。
1、继承与实现继承关系:强调属性和方法从父类向子类的传承 。实现关系:强调描述抽象和具体实现的逻辑 。
/** * 继承 */class classA {}class classB extends classA {}interface interfaceA {}interface interfaceB extends interfaceA {}/** * 实现 */class classC implements interfaceA,interfaceB{}

文章插图
2、依赖与关联依赖关系:常用来描述方法局部变量或者入参,即类的方法中调用了另一个类 。关联关系:类的成员变量是另一个类,比如常见的一对一,一对多关系 。
/** * 依赖 */class RelyA {}class RelyB {public void depend (RelyA rely){}}/** * 关联 */class AssociateA {}class AssociateB {private AssociateA associateA ;}
文章插图
3、组合与聚合聚合关系:描述整体与部分的关系,但是部分不需要依赖整体存在 。组合关系:描述整体与部分的关系,但是部分需要依赖整体存在 。
/** * 聚合 */class ElementA {}class ElementB {}class Aggregation {private ElementA elementA ;private ElementB elementB ;}/** * 组合 */class PortionA{}class PortionB{}class Composition {private PortionA portionA ;private PortionB portionB ;}
文章插图
三、模式与原则在面对复杂业务时,可以时常参考设计模式和基本原则,以此设计合理的业务结构,实现代码的高内聚低耦合,但是在一些特定场景下,也要果断的突破这些模板或原则,可以更好的支撑业务 。
1、设计模式创建模式
抽象对象实例化的创建过程,对不同类型的对象提供高效的管理方式与合理的创建手段 。
- 单例模式
- 原型模式
- 工厂模式
- 建造者模式
设计类的组装模式,合理的对象结构,有利于支持业务的持续迭代,结构会直接影响代码的可持续维护性 。
- 代理模式
- 外观模式
- 适配器模式
- 装饰者模式
- 组合模式
- 享元模式
- 桥梁模式
行为模式涉及对象职责定义,通信协作,和最具体的业务逻辑实现,明确程序运行时的流程轨迹 。
可以基于继承或实现的方式控制不同类的行为职责,即顶层抽象控制行为,下层逐级做具体逻辑实现;或者直接聚合管理责任对象,做统一分配 。
- 观察者模式
- 模版方法模式
- 策略模式
- 命令模式
- 调停者模式
- 备忘录模式
- 解释器模式
- 迭代器模式
- 状态模式
- 责任链模式
- 访问者模式
- 开闭原则:在做代码结构设计时,应该考虑对扩展开放,对修改关闭,抽象思维搭建结构,具体实现扩展细节 。
- 单一职责:一个类应该只负责一项职责;减少代码一处变更引起的程序大规模改动情况,降低类的复杂度;
- 接口隔离:每一个接口应该是一种角色;尽量避免具体实现类中用不到但是又必须实现的方法;
- 依赖倒转:上层模块不应该依赖下层模块,抽象逻辑不应该依赖具体细节,即中心思想是面向接口编程 。
- 里氏替换:继承时遵循里氏替换原则,子类中尽量不要重写父类的方法,可以扩展父类的功能;
- 迪米特原则:最少知道原则即类对象对其依赖的类知道的越少越好,以此降低耦合程度;
- 组合/聚合复用:新对象应使用部分已有的对象,使其成为新对象组成部分,实现已有功能的复用,以此降低单个类的复杂程度 。
也就是常说的一种现象:新人重构,老人不断修复问题,然而铁打的问题,流水的开发,但凡经历过重构的同学都知道,所谓的大规模重构很难彻底解决问题,甚至这是个循环动作 。所以业务代码更多是在那个版本周期内是合理的,站在一个开发的角度,这里也可以理解为笔者个人角度,通常从下面几个角度去思考具体的业务开发:
- 规范约束
这里风格指:接口命名,参数,组件,中间件等统一,以持久层为例,避免多个组件混用的情况,如果是周期相对较长的项目,经常看到单是分页查询的实现逻辑都有多种情况 。
- 可复用性
还有一些开发常说的,能用一个接口实现,绝对不使用两个接口,看似很有个性,实际已经走在挖坑的路上,多个功能请求同一个接口,即意味着任何接口的改动都要考虑很多逻辑的适配 。
所以从上层向下看,不必过度考虑复用,从下向上看,底层的改动相对较少,应该考虑复用 。
- 业务分层
经典的业务分层管理是快速迭代的基本支撑,例如常用的Mvc模式,在复杂的业务场景下可以再次细化管理,或者向领域设计靠近 。
- 流程分段
- 细节问题
五、源代码地址
GitHub·地址https://github.com/cicadasmile/java-base-parentGitEE·地址https://gitee.com/cicadasmile/java-base-parent
文章插图
- 春季老年人吃什么养肝?土豆、米饭换着吃
- 三八妇女节节日祝福分享 三八妇女节节日语录
- 老人谨慎!选好你的“第三只脚”
- 校方进行了深刻的反思 青岛一大学生坠亡校方整改校规
- 脸皮厚的人长寿!有这特征的老人最长寿
- 长寿秘诀:记住这10大妙招 100%增寿
- 春季老年人心血管病高发 3条保命要诀
- 眼睛花不花要看四十八 老年人怎样延缓老花眼
- 香槟然能防治老年痴呆症? 一天三杯它人到90不痴呆
- 老人手抖的原因 为什么老人手会抖
