接口

6大设计原则之依赖倒置原则

左心房为你撑大大i 提交于 2020-03-20 20:31:53
依赖倒置原则的定义 依赖倒置原则的原始定义如下: High level modules should not depend upon low level modules. Both should depend upon abstractions. Abstractions should not depend upon details. Details should depend upon abstractions. 翻译过来,包含如下三层含义: 高层模块不应该依赖低层模块,两者都应该依赖其抽象 抽象不应该依赖于细节 细节应该依赖于抽象 高层模块和低层模块容易理解,每一个逻辑的实现都是由原子逻辑组成的,不可分割的原子逻辑就是低层模块,原子逻辑的再组装就是高层模块.抽象就是指 接口或抽象类,两者都不能被实例化;细节就是实现类. 依赖倒置原则在Java语言中表现为: 模块间的依赖通过抽象产生,实现类之间不发生直接依赖,其依赖关系是通过接口或抽象类产生的 接口或抽象类不依赖于实现类 实现类依赖接口或抽象类 依赖倒置原则的好处 采用依赖倒置原则可以减少类间的耦合性,提高系统的稳定性,降低并行开发引起的风险,提高代码的可读性和可维护性. 依赖的三种写法 在开发中,对象的依赖关系有三种方式来传递 1.构造函数传递依赖对象 在类中通过构造函数声明依赖对象,这种方式叫做构造函数注入 2

mock数据(模拟后台数据)

邮差的信 提交于 2020-03-20 12:31:28
作为前端经常需要模拟后台数据,我们称之为mock。通常的方式为自己搭建一个服务器,返回我们想要的数据。 项目中遇到的请求链接是类似这样子的:www.abc.com/user/login,而不是请求某个文件,如果采用PHP+Apache的方式就需要做路径重写,太麻烦。这里用的是nodejs搭建。 前提 1、Web应用前后端(台)分离: 后台向前台提供API接口,只负责数据的提供和计算,而完全不处理展现 前台通过Http(Ajax)请求获取数据, 在浏览器端动态构建界面显示数据 2、设计JSON数据结构 3、利用Node+express提供模拟数据 优点:可以在浏览器端访问 缺点:如果是打包发布就无法访问模拟数据, 只能是测试时使用 与以往的自己模拟的假数据不同,mockjs可以带给我们的是:在后台接口未开发完成之前模拟数据,并返回,完成前台的交互;在后台数据完成之后,你所做的只是去掉mockjs:停止拦截真实的ajax,仅此而已。 具体操作 步骤一.将 data.json 文件拷贝到 sellapp 目录下(与 index.html 同级) 模拟的数据请求是从 data.json 中读取数据,接下来就来编写这些接口。 步骤二.在 webpack.dev.conf.js 中添加以下代码: 此次开发过程需要去本地数据地址进行请求,而原版配置在 dev-server.js 中,新版 vue

关于java8 interface的default方法

二次信任 提交于 2020-03-20 08:30:53
转自 鸟窝 博主写的挺详细,不了解的看一看啊 以前经常谈论的Java对比c++的一个优势是Java中没有多继承的问题。 因为Java中子类只能继承(extends)单个父类, 尽管可以实现(implements)多个接口,但是接口中只有抽象方法,方法体是空的,没有具体的方法实现,不会有方法冲突的问题。 这些都是久远的说法了,自从今年Java 8发布后, 接口中也可以定义方法了(default method)。 之所以打破以前的设计在接口中 增加具体的方法, 是为了既有的成千上万的Java类库的类增加新的功能, 且不必对这些类重新进行设计。 比如, 只需在Collection接口中 增加 default Stream<E> stream() , 相应的 Set 和 List 接口以及它们的子类都包含此的方法, 不必为每个子类都重新copy这个方法。 这是一个折衷的设计,带来的问题就是为Java引入了多继承的问题。 我们知道, 接口可以继承接口, 类可以继承类和实现接口。 一旦继承的类和实现的接口中有 相同签名的方法, 会出现什么样的状况呢? 本文将探讨各种情况的多继承, 以便能清楚的理解Java多继承的规则。 接口继承多个父接口 假定有三个接口Interface A, Interface B, Interface C, 继承关系如下: 1 2 3 4 5 6 7 8 9 + - -

www.pojo.com

偶尔善良 提交于 2020-03-19 19:59:00
POJO是Plain Old Java Objects的缩写不错,但是它通指没有使用Entity Beans的普通java对象,可以把POJO作为支持业务逻辑的协助类。 POJO实质上可以理解为简单的实体类,顾名思义POJO类的作用是方便程序员使用数据库中的数据表,对于广大的程 序员,可以很方便的将POJO类当做对象来进行使用,当然也是可以方便的调用其get,set方法。POJO类也给我们在struts框架中的配置带来了 很大的方便。 POJO有一些private的 参数 作为对象的属性。然后针对每个 参数 定义了get和set方法作为访问的接口。例如: public class User { private long id; private String name; public void setId(long id) { this. id = id; } public void setName(String name) { this. name=name; } public long getId() { return id; } public String getName() { return name; } } POJO对象有时也被称为 Data 对象,大量应用于表现现实中的对象。如果项目中使用了Hibernate 框架 ,有一个关联的xml文件,使对象与数据库中的表对应

java匿名内部类,以及实现Comparato和Comparable接口实现对对象的排序

陌路散爱 提交于 2020-03-19 14:22:26
匿名内部类的声明使用方式, Comparabletor接口实现,需要先导入包,再实现Comparator的对象比较的方法,并且需要新声明比较器类去实现此接口,再用比较器类新建对象调用compare(Objecto1, Object o2)方法,比较两个需要比较的对象的大小 Comparable的接口实现方式,可以直接使用需要比较的类去实现此接口,需要比较的对象去调用compareTo(Object o)方法即可 import java.util.Comparator; import java.util.Arrays; public class TestComparator{   public static void main(String[] args){     Student s1 = new Student(16, 'n', 99);     Student s2 = new Student(18, 'n', 98);     int res = s1.compareTo(s2);//根据实现接口重写的方法,对分数进行比较     Student s3 = new Student(17, 'n', 96);     Student[] students = new Student[3];     students[0] = s1;     students[1] = s2;

【WCF 1】WCF框架宏观了解

橙三吉。 提交于 2020-03-19 12:56:35
导读: 使用WCF框架爱开发项目也有很长一段时间了,最开始的时候,是理解的不深,所以不写博客进行总结。后来是项目赶,发现需要总结的有很多,一直没有把WCF排上日程,尤其是最近研究EF这一块,更是研究了一些ORM框架的东西,包括Hibernate工作原理等。最后,是因为自己都会了,觉得就先不总结了吧,反正都会。现在,正式总结WCF的第一篇博客,先宏观 介绍一下。 在基本概述中,主要是从书本、网络上查找的一些基本的定义 一、基本概述 【以下内容是从维基百科上搜索的WCF的定义】 Windows Communication Foundation (WCF) is a framework for building service-oriented applications. Using WCF, you can send data as asynchronous messages from one service endpoint to another. A service endpoint can be part of a continuously available service hosted by IIS, or it can be a service hosted in an application. An endpoint can be a client of a

DAO层,Service层,Controller层、View层

帅比萌擦擦* 提交于 2020-03-18 08:25:57
一、DAO层: DAO层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,DAO层的设计首先是设计DAO的接口,然后在Spring的配置文件中定义此接口的实现类,然后就可在模块中调用此接口来进行数据业务的处理,而不用关心此接口的具体实现类是哪个类,显得结构非常清晰,DAO层的数据源配置,以及有关数据库连接的参数都在Spring的配置文件中进行配置。 二、Service层: Service层主要负责业务模块的逻辑应用设计。同样是首先设计接口,再设计其实现的类,接着再Spring的配置文件中配置其实现的关联。这样我们就可以在应用中调用Service接口来进行业务处理。Service层的业务实现,具体要调用到已定义的DAO层的接口,封装Service层的业务逻辑有利于通用的业务逻辑的独立性和重复利用性,程序显得非常简洁。 三、Controller层: Controller层负责具体的业务模块流程的控制,在此层里面要调用Serice层的接口来控制业务流程,控制的配置也同样是在Spring的配置文件里面进行,针对具体的业务流程,会有不同的控制器,我们具体的设计过程中可以将流程进行抽象归纳,设计出可以重复利用的子单元流程模块,这样不仅使程序结构变得清晰,也大大减少了代码量。 四、View层: View层 此层与控制层结合比较紧密,需要二者结合起来协同工发。 详细说明:

面向对象设计的一些原则

泪湿孤枕 提交于 2020-03-18 06:58:24
面向对象设计的一些原则 “开—闭”原则 面向对象设计的基石是“开—闭”原则。“开一闭”原则讲的是:一个软件实体应当 对扩展开放,对修改关闭 。这个规则说的是,在设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展。从另外一个角度讲,就是所谓的“对可变性封装原则”。 “对可变性封装原则”意味着两点: 一种 可变性 不应当散落在代码的很多角落里,而 应当被封装到一个对象里面 。同一种可变性的不同表象意味着同一个继承等级结构中的具体子类。 一种可变性不应当与另一种可变性混合在一起。即 类图的继承结构一般不应超过两层 。 做到“开—闭”原则不是一件容易的事,但是也有很多规律可循,这些规律同样也是设计原则,它们是实现开—闭原则的工具。 里氏代换原则 如果 一个软件实体使用的是基类的话那么也一定适用于子类 。但反过来的代换不成立。 如果有两个具体类A和B之间的关系违反了里氏代换原则,可以在以下两种重构方案中选择一种: 创建一个新的抽象类C,作为两个具体类的超类 ,将A和B共同的行为移动到C中,从而解决A和B行为不完全一致的问题。 从B到A的继承关系改写为委派关系 。 咋一看觉得这个怎么还是面向对象设计的原则呢?这个明明就是Java的语法规则。对,Java是提供了对里氏代换原则在语法上的支持。但是仅仅是语法上,在和现实世界的相符合程度上根本没有提供

关于RESTful接口规范

天大地大妈咪最大 提交于 2020-03-17 22:59:26
知乎上的一个通俗易懂的解释:如何给老婆解释什么是RESTful - 柳树的文章 - 知乎 https://zhuanlan.zhihu.com/p/30396391 阮一峰大佬的restful设计指南: http://www.ruanyifeng.com/blog/2014/05/restful_api.html#comment-text 来源: https://www.cnblogs.com/huahongzhenghexiu/p/12512675.html

21.【接口总结】

故事扮演 提交于 2020-03-17 22:46:30
在Java 9+版本中,接口的内容可以有 1. 成员变量其实是常量 格式 [ public ] [ static ] [ final ] 数据类型 常量名称 = 数据值 ; 注意 常量必须进行赋值,而且一旦赋值不能改变。 常量名称完全大写,用下划线进行分隔。 2. 接口中最重要的就是抽象方法 格式: [ public ] [ abstract ] 返回值类型 方法名称 ( 参数列表 ) ; 注意: 实现类必须覆盖重写接口所有的抽象方法,除非实现类是抽象类。 3. 从Java 8开始,接口里允许定义默认方法 格式: [ public ] default 返回值类型 方法名称 ( 参数列表 ) { 方法体 } 注意: 默认方法也可以被覆盖重写 4. 从Java 8开始,接口里允许定义静态方法 格式: [ public ] static 返回值类型 方法名称 ( 参数列表 ) { 方法体 } 注意: 通过接口名称进行调用,不能通过实现类对象调用接口静态方法 5. 从Java 9开始,接口里允许定义私有方法 格式: 普通私有方法 private 返回值类型 方法名称 ( 参数列表 ) { 方法体 } 静态私有方法 private static 返回值类型 方法名称 ( 参数列表 ) { 方法体 } 注意: private的方法只有接口自己才能调用,不能被实现类或别人使用。 来源: CSDN