抽象方法

Java基础知识笔记-8-接口,lambda表达式与内部类

落花浮王杯 提交于 2019-11-29 15:12:17
Java基础知识笔记-8-接口,lambda表达式与内部类 首先,介绍一下接口(interface)技术,这种技术主要用来描述类具有什么功能,而并不给出每个功能的具体实现。一个类可以实现(implement)一个或多个接口,并在需要接口的地方,随时使用实现了相应接口的对象。了解接口以后,再继续介绍而表达式,这是一种表示可以在将来某个时间点执行的代码块的简洁方法。使用lambda表达式,可以用一种精巧而简洁的方式表示使用回调或变量行为的代码。 接下来,讨论内部类(inner class)机制。理论上讲,内部类有些复杂,内部类定义在另外一个类的内部,其中的方法可以访问包含它们的外部类的域。内部类技术主要用于设计具有相互协作关系的类集合。 10.1 接口 在Java程序设计语言中, 接口不是类,而是对类的一组需求描述,这些类要遵从接口描述的统一格式进行定义。 在Java语言中,接口有两种意思 一是指概念性的接口,即指系统对外提供的所有服务,类的所有能被外部使用者访问的方法构成了类的接口 二是指interface关键字定义的实实在在的接口,也称为接口类型。 在面相对象程序设计中,定义一个类必须做什么而不是怎么做有时是很有益的。前面有一个这样的例子:抽象方法为方法定义了签名,但不提供实现方式。子类必须自己实现由其父类定义的抽象方法。这样,抽象方法就指定了方法的接口而不是实现

面向对象设计原则

人走茶凉 提交于 2019-11-29 14:59:42
目录 一、开放封闭原则 二、里式替换原则 三、依赖倒置原则 四、接口隔离原则 五、单一职责原则 一、开放封闭原则 概念理解 开放封闭原则是指在进行面向对象设计中,设计类或者程序应该遵循两点:对扩展开放和对修改关闭。这样,一个模块在实现的过程中,就可以在不修改原来的模块(修改关闭)基础上,扩展器功能(扩展开放)。 扩展开放。指的是某个模块的功能是可扩展的,则该模块是扩展开放的。软件系统的功能上的可扩展性要求模块是扩展开放的。 修改关闭。指的是某模块被其他模块调用,如果该模块的源代码不允许修改,则该模块修改关闭的。软件系统的功能上的稳定性,持续性要求模块是修改关闭的。 开闭原则的实现方法 为了满足开闭原则的对修改关闭,对扩展开放原则,应该 对软件系统中的不变的部分加以抽象 。 实现原则: 把不变的部分抽象成不变的接口,这些不变的接口可以应对未来的扩展。在python中可以使用abc模块来建立抽象类,以及对应的接口。 接口的最小功能设计原则。根据这个原则,原有的接口要么可以应对未来的扩展,不足的部分可以通过定义新的接口来实现。 模块之间的调用通过该抽象接口进行,这样即使实现层发生变化,也无需修改调用方的代码。 优点: 提高系统的可复用性。 提高系统的可维护性。 开闭原则的相对性 软件系统的构建是一个需要不断重构的过程,在这个过程中,模块的功能抽象,模块与模块之间的关系

Java面向对象

我只是一个虾纸丫 提交于 2019-11-29 14:50:01
Java 继承 继承的概念 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。 兔子和羊属于食草动物类,狮子和豹属于食肉动物类。 食草动物和食肉动物又是属于动物类。 所以继承需要符合的关系是:is-a,父类更通用,子类更具体。 虽然食草动物和食肉动物都是属于动物,但是两者的属性和行为上有差别,所以子类会具有父类的一般特性也会具有自身的特性。 类的继承格式 在 Java 中通过 extends 关键字可以申明一个类是从另外一个类继承而来的,一般形式如下: 类的继承格式 class 父类 { } class 子类 extends 父类 { } 为什么需要继承 接下来我们通过实例来说明这个需求。 开发动物类,其中动物分别为企鹅以及老鼠,要求如下: 企鹅:属性(姓名,id),方法(吃,睡,自我介绍) 老鼠:属性(姓名,id),方法(吃,睡,自我介绍) 继承类型 需要注意的是 Java 不支持多继承,但支持多重继承。 继承的特性 子类拥有父类非 private 的属性、方法。 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。 子类可以用自己的方式实现父类的方法。 Java 的继承是单继承,但是可以多重继承

二.工厂方法模式

£可爱£侵袭症+ 提交于 2019-11-29 14:32:52
🚗工厂方法模式 引言:上一篇写的的是 简单工厂模式 ,简单工厂模式只有三个要素(工厂、抽象产品、具体产品),它没有 工厂接口 ,并且得到产品的方法一般是静态的,所以在工厂实现的扩展性上面较差,可以当作工厂模式的简化版。在简单工厂模式中,当增加一个产品子类的时候,还需要在工厂方法的Switch分支中新增一个判断,只做到了对扩展的开放,并没有做到对修改关闭,而这点在工厂方法模式中得到了一定的克服,作为简单工厂模式的升级版,工厂方法模式更适用于复杂一点的创建方法中。 1.何为工厂方法模式❓ 介绍 ​ 工厂方法模式(FACTORY METHOD)是一种常用的类 创建型设计模式 ,此模式的核心精神是封装类中变化的部分,提取其中个性化善变的部分为独立类,通过 依赖注入 以达到解耦、复用和方便后期维护拓展的目的。它的核心结构有四个角色,分别是抽象工厂、具体工厂、抽象产品、具体产品 。 该模式中包含的角色及其职责:🕺 抽象工厂(Creator)角色: 是工厂方法模式的 核心 ,与应用程序无关。任何在模式中创建的对象的工厂类必须实现这个接口。 具体工厂(Concrete Creator)角色: 这是实现抽象工厂接口的具体工厂类,包含与应用程序密切相关的逻辑,并且受到应用程序调用以创建产品对象。在上图中有两个这样的角色:BulbCreator与TubeCreator。 抽象产品(Product)角色:

python 面向对象之继承

我是研究僧i 提交于 2019-11-29 13:56:06
继承 什么是继承 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为 基类 或 超类 ,新建的类称为 派生类 或 子类 python中类的继承分为:单继承和多继承 class ParentClass1: #定义父类 pass class ParentClass2: #定义父类 pass class SubClass1(ParentClass1): #单继承,基类是ParentClass1,派生类是SubClass pass class SubClass2(ParentClass1,ParentClass2): #python支持多继承,用逗号分隔开多个继承的类 pass 提示:如果没有指定基类,python的类会默认继承object类,object是所有python类的基类,它提供了一些常见方法(如 __str__ )的实现 >>> ParentClass1.__bases__ (<class 'object'>,) >>> ParentClass2.__bases__ (<class 'object'>,) 抽象与继承(先抽象再继承) 抽象即抽取类似或者说比较像的部分。 抽象分成两个层次: 将奥巴马和梅西这俩对象比较像的部分抽取成类; 将人,猪,狗这三个类比较像的部分抽取成父类。 抽象最主要的作用是划分类别(可以隔离关注点,降低复杂度) 继承

MVC5+EF6 入门完整教程11--细说MVC中仓储模式的应用

回眸只為那壹抹淺笑 提交于 2019-11-29 12:44:55
摘要: 第一阶段1~10篇已经覆盖了MVC开发必要的基本知识。 第二阶段11~20篇将会侧重于专题的讲解,一篇文章解决一个实际问题。 根据园友的反馈, 本篇文章将会先对呼声最高的仓储模式进行讲解。 文章提纲 概述要点 理论基础 详细步骤 总结 概述要点 设计模式的产生,就是在对开发过程进行不断的抽象。 我们先看一下之前访问数据的典型过程。 在Controller中定义一个Context, 例如: private AccountContext db = new AccountContext(); 在Action中访问,例如获取用户列表: var users=db.SysUsers; 类似于这种,耦合性太高。业务逻辑直接访问数据存储层会导致一些问题,如 重复代码;不容易集中使用数据相关策略,例如缓存;后续维护,修改增加新功能不方便 等等。 我们使用repository来将业务层和数据实体层分开来,业务逻辑层应该对组成数据源层的数据类型不可知,比如数据源可能是数据库或者Web service 在数据源层和业务层之间增加一个repository层进行协调,有如下作用: 1.从数据源中查询数据 2.映射数据到业务实体 3.将业务实体数据的修改保存到数据源 (持久化数据) 这样repository就将业务逻辑和基础数据源的交互进行了分隔。 数据和业务层的分离有如下三个优点: 1

Java 函数式接口

雨燕双飞 提交于 2019-11-29 12:00:18
目录 Java 函数式接口 1. 函数式接口 1.1 概念 1.2 格式 1.3 函数式接口的使用 2. 函数式编程 2.1 Lambda的延迟执行 2.2 使用Lambda作为方法的参数&返回值 3. 常用的函数式接口 3.1 Supplier <T> 接口 3.2 Consumer <T> 接口 3.3 Predicate <T> 接口 3.4 Function <T, R> 接口 Java 函数式接口 1. 函数式接口 1.1 概念 函数式接口:有且只有一个抽象方法的接口,称之为函数式接口。 当然接口中还可以包含其他的方法(静态,默认,私有) @FunctionalInterface注解 作用:可以检测接口是否是一个函数式接口 是:编译成功 否:编译失败(接口中没有抽象方法,或抽象方法的个数多余1个) 备注:“ 语法糖 ”,是指使用更加方便,但是原理不变的代码语法。例如在遍历集合时使用的 for-each语法,其实底层的实现原理仍然是迭代器,这便是" 语法糖 "。从应用层面来讲,Java中的 Lambda可以被当作是匿名内部类的的 "语法糖",但是二者在原理上是不同的。 1.2 格式 只要确保接口中有且仅有一个抽象方法即可: 修饰符 interface 接口名称 { public static abstract 返回值类型 函数名称(参数列表); // 其他非抽象方法内容 }

java属性与方法

被刻印的时光 ゝ 提交于 2019-11-29 08:37:14
java属性与方法 文章目录 java属性与方法 1,什么是类: 2,什么是对象: 属性: 变量的分类: 成员变量细分 变量的作用域 方法: 3.变量的生命周期 4, JVM内存划分 1,什么是类: 类的定义 类是现实世界当中是不存在的,是一个模版,是一个概念,是抽象出来的结果。 类代表了一类事物,具有同种属性的对象称为类,是个抽象的概念, 一个类主要描述的是:状态和动作。 语法结构: [修饰符列表] class 类名{ ​ 属性: ​ 方法: } 2,什么是对象: 对象是实际存在的个体,是现实世界当中实际存在的任何事务,有自己独特的特性。 属性: 用来描述具体某个对象的特征。描述的是对象的状态信息,通常以变量的形式进行定义。 变量通常分为成员变量和局部变量 在类体中,方法体之外定义的变量称为“成员变量” 成员变量定义在类体中,在整个类中都可以被访问。 成员变量分为类变量和实例变量,实例变量存在于对象所在的堆内存中 成员变量有默认初始化值 成员变量的权限修饰符可根据需要,选择任意一个 创建对象后才能访问的变量称为实例变量 定义在方法内,代码块内的变量称为局部变量 局部变量定义在局部范围内 局部变量存在于栈内存中 作用范围结束,变量空间自动释放 局部变量无默认值,每次必须显示初始化 局部变量声明时不指定权限修饰符 变量的分类: 成员变量细分 变量的作用域 方法:

抽象方法学习笔记

元气小坏坏 提交于 2019-11-29 07:58:38
抽象方法:加上关键字abstract关键字,然后去掉方法的大括号以及大括号内部的语句,直接分号结束; 抽象类:抽象方法所在的类,且抽象方法必须在抽象类中,在class之前添加abstract即可(但是抽象类不一定必须有抽象方法); public abstract class Animal { public abstract void eat(); //抽象方法必须在抽象类中 public void other() { //抽象类中可以存在普通方法 } } 如何使用抽象类和抽象方法: 1.抽象方法不可以通过new来直接创建一个抽象类对象; 2.抽象父类必须用至少一个子类来继承; 3.子类必须重写覆盖抽象父类中所有的抽象方法(重写:子类中去掉抽象父类中抽象方法的abstract关键字,然后在补回大括号以及大括号中的方法体),否则子类也是抽象类; 4.通过创建子类对象(new一个子类对象)来使用。 class dog extends Animal{ public void eat() { System.out.println("吃骨头"); } } 抽象类中,可以有构造方法,供子类创建对象时初始化父类成员使用。 来源: https://my.oschina.net/u/4204253/blog/3103409

《敏捷软件开发──原则、模式与实践》阅读笔记

自闭症网瘾萝莉.ら 提交于 2019-11-29 05:16:23
《敏捷软件开发──原则、模式与实践》阅读笔记 /*--> */ /*--> */ 《敏捷软件开发──原则、模式与实践》阅读笔记 Table of Contents 1. 敏捷开发 1.1. 敏捷联盟宣言 1.2. 敏捷开发的原则 2. 极限编程 3. 设计原则 3.1. 单一职责原则(SRP) 3.2. 开放——封闭原则(OCR) 3.2.1. 遵循开放──封闭原则设计出的模块具有两个主要的特征 3.3. Liskov替换原则(LSP) 3.4. 依赖倒置原则(DIP) 3.5. 接口隔离原则(ISP) 4. 常用设计模式 4.1. Command模式和Active Object 4.1.1. Command模式的优点 4.1.2. Active Object模式 4.2. Template Method模式和Strategy模式:继承和委托 4.2.1. Template Method模式 4.2.2. Strategy模式 4.2.3. 对比 4.3. Facade模式和Mediator模式 4.3.1. facade模式 4.3.2. Mediator模式 4.3.3. 对比 4.4. Singleton模式和Monostate模式 4.4.1. Singleton模式 4.4.2. Monostate模式 4.4.3. 对比 4.5. Null Object模式 4.6.