前言:在一个面向对象的系统中,系统的各种功能是由许许多多的不同对象协作完成的。在这种情况下,各个对象内部是如何实现对系统设计人员来说就不那么重要;而各个对象之间的协作关系则成为系统设计的关键。小到不同类之间的通信,大到各模块之间的交互,在系统设计之初都是要着重考虑的,这也是系统设计的主要工作内容。

 
    对象是接口的实现,面向对象的设计其本质就是面向接口的设计,类和模块之间的交互是由接口完成的,接口是定义和实现的分离。
 
    对接口的理解:
    1、接口是一些方法特征的集合,这些方法是在系统中不断的出现。常用的接口包括:单方法接口、标识接口、不建议使用的常量接口
    2、接口是更深层次的理解,应是定义(规范,约束)与实现(名实分离的原则)的分离。
    3、接口的本身反映了系统设计人员对系统的抽象理解。
    4、接口分为两类,对个体的抽象,我们称之为抽象体(abstract class);对个体某方面的抽象,我们称之为抽象面(interface)。一个抽象体可以有多个抽象面,抽象体应当拥有尽可能多的共同代码,拥有尽可能少的数据。
 
    面向接口设计遵循的原则: 
    1、开闭原则:模块可以不被修改的前提下扩展,面向对象设计的重要原则是创建抽象化,并且从抽象化导出具体化。
    2、里氏代换原则:一个实体如果使用的是一个基类的话,那么一定适用于其子累
    3、依赖倒转原则:要依赖于抽象,不要依赖于具体
    4、接口隔离原则:使用多个专门的接口,比使用单一的总接口要好
    5、合成/聚合复用原则:要尽量使用合成/聚合,尽量不要使用继承
    6、迪米特法则:一个对象应当对其他对象有尽可能少的了解
            1、优先考虑将一个类设置成不变类,例如:String、BigInteger等
            2、尽量降低一个类的访问权限
            3、谨慎使用Serialiazble
            4、尽量降低成员的访问权限:设计一个类的方法时,应当首先考虑将其设置为private
            5、取代C struct,使用属性的getXX和setXX方法
    6、在系统类得继承等级中,树叶节点均应当是具体类,而树枝节点是均应当是抽象类或接口。

Java设计原则:面向接口的设计的更多相关文章

  1. 设计原则:接口隔离原则(ISP)

    接口隔离原则的英文是Interface Segregation Principle,缩写就是ISP.与里氏替换原则一样其定义同样有两种 定义1: Clients should not be force ...

  2. 【转】App架构设计经验谈:接口的设计

    App架构设计经验谈:接口的设计 App与服务器的通信接口如何设计得好,需要考虑的地方挺多的,在此根据我的一些经验做一些总结分享,旨在抛砖引玉. 安全机制的设计 现在,大部分App的接口都采用REST ...

  3. Java++:安全|API接口安全性设计

    接口的安全性主要围绕 token.timestamp 和 sign 三个机制展开设计,保证接口的数据不会被篡改和重复调用,下面具体来看: Token授权机制: 用户使用用户名密码登录后服务器给客户端返 ...

  4. Java中的面向接口编程

    面向接口编程是很多软件架构设计理论都倡导的编程方式,学习Java自然少不了这一部分,下面是我在学习过程中整理出来的关于如何在Java中实现面向接口编程的知识.分享出来,有不对之处还请大家指正. 接口体 ...

  5. 设计模式——<面向对象设计原则以及23种设计模式分类>

    一.面向对象八大设计原则: 1.依赖倒置原则(DIP) 高层模块(稳定)不应该依赖于低层模块(变化),二者都应该依赖于抽象(稳定) . 抽象(稳定)不应该依赖于实现细节(变化) ,实现细节应该依赖于抽 ...

  6. 最简单直接地理解Java软件设计原则之接口隔离原则

    理论性知识 定义 接口隔离原则, Interface Segregation Principle,(ISP). 一个类对应一个类的依赖应该建立在最小的接口上: 建立单一接口,不要建立庞大臃肿的接口: ...

  7. IOS设计模式的六大设计原则之接口隔离原则(ISP,Interface Segregation Principle)

    定义 客户端不应该依赖它不需要的接口: 一个类对另一个类的依赖应该建立在最小的接口上. 定义解读 定义包含三层含义: 一个类对另一个类的依赖应该建立在最小的接口上: 一个接口代表一个角色,不应该将不同 ...

  8. 设计模式学习--面向对象的5条设计原则之接口隔离原则--ISP

    一.ISP简介(ISP--Interface Segregation Principle): 使用多个专门的接口比使用单一的总接口要好.一个类对另外一个类的依赖性应当是建立在最小的接口上的.一个接口代 ...

  9. java设计原则:16种原则

    一   类的设计原则   1 依赖倒置原则-Dependency Inversion Principle (DIP) 2 里氏替换原则-Liskov Substitution Principle (L ...

随机推荐

  1. MyBatis出错Result Maps collection does not contain value for java.lang.Integer

    Servlet.service() for servlet [SpringMVC] in context with path [/eyou] threw exception [Request proc ...

  2. Cocopod上更新上传自己的开源框架供别人下载

    为了更方便的集成第三方框架有了cocopods 的, 当我们有了相对比较好的框架的时候如何更新到cocopods 供他人参考呢? 下面我一步一步带大家开源自己的框架. 第一步 把自己的框架更新到git ...

  3. PM2实用入门指南

    简介 PM2是node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控.自动重启.负载均衡等,而且使用非常简单. 下面就对PM2进行入门性的介绍,基本涵盖了PM2的常用的功能和 ...

  4. Google浏览器导出书签

    C:\users\用戶名\AppData\Local\Google\Chrome\User Data\Default\Bookmarks 這個文件就是書簽啊,復制一下就行了

  5. 《TCP/IP详解卷1:协议》第4章 ARP:地址解析协议-读书笔记

    章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...

  6. 第四十五课:MVC,MVP,MVVM的区别

    前端架构从MVC到MVP,再到MVVM,它们都有不同的应用场景.但MVVM已经被证实为界面开发最好的方案了. MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/P ...

  7. 第二十六课:jQuery对事件对象的修复

    因为原生的event对象,在不同浏览器下,有不同的属性和方法,因此需要用jQuery进行兼容. jQuery在这里分两步走,首先创建一个伪事件类jQuery.Event(jQuery里面自定义的事件类 ...

  8. Moqui学习Day2

    用户 本地化  消息和日志门面 用户门面用于管理当前用户和访问,登陆,授权及登出的信息.用户信息包括区域设置,时区以及币种/ec.user.nowTimestamp设置日期. 消息门面用于追踪用户的消 ...

  9. Java数组的--遍历

    (I)标准for循环遍历数组 例如代码片段: int [] nums = new int [] {0,1,2,3,4,5,6,7,8,9}; for(int i=0;i<11;i++){ Sys ...

  10. c#批量插入示例

    var sql = @"Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-MvcApplication1-20131029153010;I ...