深入理解面向对象编程。

摘要

面向对象编程是Java编程中最重要的概念,它包含了承继、封裝和多态。其中封裝特别重要,它可以将目标实体的构造、数据和操作隐藏起来,只留下对外开放的接口,降低了程序的耦合度。

正文

面向对象编程 面向对象编程是Java程序编写中最关键的观念,本质特征:承继、封裝、多态。 特点之封裝 将构造、数据信息、实际操作封裝在目标实体线中,应用时可以不关心目标内部构造,只有浏览对外开放管理权限的作用通道,进而减少藕合水平

一、面向对象编程

面向对象编程是Java程序编写中最关键的观念,本质特征:承继、封裝、多态。

1、特点之封裝

将构造、数据信息、实际操作封裝在目标实体线中,应用时可以不关心目标内部构造,只有浏览对外开放管理权限的作用通道,进而减少程序流程藕合水平,给予安全系数和可持续性可维护性。

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 {
    @Override
    public void voice() {
        System.out.println("Dog ... Wang wang");
    }
}
class Cat extends Animal {
    @Override
    public 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、策略模式

建立方式

抽象性目标创建对象的建立全过程,对不一样种类的目标给予高效率的管理方式与有效的建立方式。

  • 单例模式
  • 原型模式
  • 工厂模式
  • 建造者模式

构造方式

设计类的拼装方式,有效的目标构造,有益于适用业务流程的不断迭代更新,构造会立即危害编码的可持续性可维护性。

  • 分销模式
  • 外观模式
  • 适配器模式
  • 装饰者模式
  • 组合模式
  • 享元模式
  • 公路桥梁方式

行为模式

行为模式涉及到目标岗位职责界定,通讯合作,和最实际的领域模型完成,确立程序执行时的步骤运动轨迹。

能够根据承继或完成的方法操纵不一样类的个人行为岗位职责,即高层抽象性操纵个人行为,下一层逐步做实际逻辑性完成;或是立即汇聚管理方法义务目标,做统一分配。

  • 观察者模式
  • 模板方式 方式
  • 策略模式
  • 命令模式
  • 调停者方式
  • 备忘录模式
  • 编译器方式
  • 迭代器模式
  • 状态模式
  • 责任链模式
  • 访问者模式

2、基本准则

  • 开闭原则:在做编码总体设计时,应当考虑到对拓展对外开放,对改动关掉,抽象思维能力构建构造,实际完成拓展关键点。

  • 单一岗位职责:一个类应当只承担一项岗位职责;降低编码一处变动造成的程序流程规模性修改状况,减少类的复杂性;

  • 接口隔离:每一个插口应该是一种人物角色;尽量减少实际完成类选用不上可是又务必完成的方式 ;

  • 依靠反转:顶层控制模块不应该依靠下一层控制模块,抽象性逻辑性不应该依靠实际关键点,即主题思想是朝向插口程序编写。

  • 地震震级更换:承继时遵循地震震级更换标准,派生类中尽可能不必调用父类的方式 ,能够拓展父类的作用;

  • 迪米特原则:至少了解标准即类目标对其依靠的类了解的越低越高,为此减少藕合水平;

  • 组成/汇聚重复使用:新目标应应用一部分现有的目标,使其变成 新目标构成部分,完成现有作用的重复使用,为此减少单独类的复杂性。

四、业务流程运用

在业务流程开发设计中,许多繁杂的逻辑性全是根据面向对象编程的观念做的设计方案和实际完成,可是在事实上业务流程是持续转变的,因此 无论是常见的Mvc方式,或是行业设计方案,只需历经好几个版本号迭代更新,多的人参加的开发设计,到最终编码在逻辑性方面都是会令人痴迷。

也就是常说的一种状况:新手重新构建,老年人持续修补难题,殊不知跌打的难题,水流的开发设计,只要是经历过重新构建的同学们都了解,说白了的规模性重新构建难以彻底消除难题,乃至它是个循环系统姿势。因此 业务流程编码大量是在那一个版本号周期时间内是有效的,立在一个开发设计的视角,这儿还可以了解为小编本人视角,一般从下边好多个视角去思索实际的业务流程开发设计:

  • 标准管束

它是本人觉得业务流程工程项目中最重要的基本,无论业务流程怎样繁杂,都离不了与之相对应的数据信息增删,因此 对基本基本实际操作搞好统一编码设计风格管理方法,那样有利于他人迅速了解总体构造和逻辑性。

这儿设计风格指:插口取名,主要参数,部件,分布式数据库等统一,以持久层为例子,防止好几个部件互用的状况,如果是周期时间相对性较长的新项目,常常见到单是分页查询的完成逻辑性都是有多种多样状况。

  • 可重复使用性

易失是业务流程自身的特性,因此 高宽比重复使用的业务流程编码自身就存有非常大的限定,比如普遍的许多方式 ,为了更好地兼容各种各样情景,持续拓展入参,随后有一些独特业务流程也会开展独特传参。

也有一些开发设计常说的,能用一个插口完成,肯定不应用2个插口,看起来很有个性,具体早已走在挖地的道路上,好几个作用要求同一个插口,即代表着一切插口的修改都需要考虑到许多逻辑性的兼容。

因此 从顶层向下看,无须过多考虑到重复使用,由下向上看,最底层的修改相对性较少,应当考虑到重复使用。

  • 业务流程分层次

从新项目生命期的视角思索,业务流程是一个迭代更新的全过程,不用过多新潮的设计方案,新项目的生命期是多长时间没有人了解,最妥当的作法是快速迭代,商品和技术性工程项目能迅速平稳的支撑点市场拓展就可以。

經典的业务流程分层次管理方法是快速迭代的基本上支撑点,比如常见的Mvc方式,在繁杂的业务场景下能够再度优化管理方法,或是向行业设计方案挨近。

  • 步骤按段

业务流程能够了解为流程优化,小的步骤一般service中能够立即解决,可是繁杂步骤则十分注重设计方案,一个基本观念便是按段管理方法,较为經典的实例便是提交订单:搭建清算网页页面时复位订单信息-付款时订单信息递交-验证成功才会实行订单信息。

  • 关键点难题

逻辑性上的关键点要不断追求完美认真细致,业务流程完成方式和构思适度放开,步骤经得住磨练,最底层完成有效的重复使用,部件挑选上应当立在高纬,就基本上足够。

五、源码详细地址

GitHub·详细地址
https://github.com/cicadasmile/java-base-parent
GitEE·详细地址
https://gitee.com/cicadasmile/java-base-parent

阅读文章标识

【Java基本】【策略模式】【构造与优化算法】【Linux系统软件】【数据库查询】

【分布式架构】【微服务架构】【互联网大数据部件】【SpringBoot升阶】【Spring&Boot基本】

【数据统计分析】【技术性思维导图】【 初入职场】

关注不迷路

扫码下方二维码,关注宇凡盒子公众号,免费获取最新技术内幕!

温馨提示:如果您访问和下载本站资源,表示您已同意只将下载文件用于研究、学习而非其他用途。
文章版权声明 1、本网站名称:宇凡盒子
2、本站文章未经许可,禁止转载!
3、如果文章内容介绍中无特别注明,本网站压缩包解压需要密码统一是:yufanbox.com
4、本站仅供资源信息交流学习,不保证资源的可用及完整性,不提供安装使用及技术服务。点此了解
5、如果您发现本站分享的资源侵犯了您的权益,请及时通知我们,我们会在接到通知后及时处理!提交入口
0

评论0

请先

站点公告

🚀 【宇凡盒子】全网资源库转储中心

👉 注册即送VIP权限👈

👻 全站资源免费下载✅,欢迎注册!

记得 【收藏】+【关注】 谢谢!~~~

立即注册
没有账号?注册  忘记密码?

社交账号快速登录