一、7个常用的面向对象设计原则

1、单一职责原则:

  它是实现高内聚、低耦合的指导方针;一个对象应该只包含单一的职责,并且该职责被完整的封装在一个类中;

2、开闭原则:

  指软件实体应尽量在不改变原有的代码的情况下进行扩展;

3、里氏替换原则:

  在运用里氏替换原则时应将父类设计为抽象类或者接口,让子类继承父类或实现父类接口,并实现父类中声明的方法,在运行时子类实例替换父类实例,可以很方便的扩展系统的功能,无需修改子类原有的代码,添加一个新功能只需新增一个子类来实现。

4、依赖倒转原则:

  它要求针对接口编程,不要针对实现编程;其在程序代码中传递参数或关联关系中应引用层次高的抽象层,即使用接口和抽象类进行变量类型声明、参数类型声明、方法返回值声明,以及数据转换声明等,而不要使用具体类来做这些事情。

5、接口隔离原则;

  客户端不应该依赖那些不需要的接口,应尽量细化,同时接口中的方法应尽量少,每一个接口应该遵守单一职责,承担一种独立的角色。

6、合成复用原则:

  优先使用组合、聚合,而不是用继承来达到复用的目的;降低类与类之间的耦合度,尽量减少一个类的变化对其他类造成影响;

7、迪米特原则:

  一个模块发生修改时应尽量少的影响其他模块,扩展会相对容易,可以通过中间类来转发这个调用,来降低现有对象之间的耦合度,如果需要增加或删除,可修改中间类即可;

二、24种设计模式归纳:

创建型模式(6种):

  简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式、单例模式

结构型模式(7种):

  代理模式、适配器模式、装饰器模式、桥接模式、组合模式、亨元模式、外观模式

行为型模式(11种):

  模板方法模式、策略模式、责任链模式、观察者模式、命令模式

  中介者模式、迭代器模式、解释器模式、备忘录模式、访问者模式、状态模式

三、24种设计模式优缺点及适用场景

Java24种设计模式的优点、缺点和适用环境总结的更多相关文章

  1. java24种设计模式

    一.设计模式定义 设计模式(Design Pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结,使用设计模式是为了可重用代码.让代码更容易被他人理解并且保证代码可靠性. ...

  2. LVS三种模式配置及优点缺点比较 转

    LVS三种模式配置及优点缺点比较   作者:gzh0222,发布于2012-11-12,来源:CSDN   目录: LVS三种模式配置 LVS 三种工作模式的优缺点比较 LVS三种模式配置 LVS三种 ...

  3. Java开发中的23种设计模式详解

    [放弃了原文访问者模式的Demo,自己写了一个新使用场景的Demo,加上了自己的理解] [源码地址:https://github.com/leon66666/DesignPattern] 一.设计模式 ...

  4. Java开发中的23种设计模式详解(转)

    设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...

  5. Java开发中的23种设计模式(转)

    设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...

  6. c#中的23种设计模式

    C# 23种设计模式汇总 创建型模式 工厂方法(Factory Method) 在工厂方法模式中,工厂方法用来创建客户所需要的产品,同时还向客户隐藏了哪种具体产品类将被实例化这一细节.工厂方法模式的核 ...

  7. java 23种设计模式及具体例子 收藏有时间慢慢看

    设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代 码可靠性. 毫无疑问,设计模式 ...

  8. JAVA:23种设计模式详解(转)

    设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...

  9. 23种设计模式全解析 (java版本)

    转自:http://blog.csdn.net/longyulu/article/details/9159589 其中PHP常用的五种设计模式分别为:工厂模式,单例模式,观察者模式,策略模式,命令模式 ...

随机推荐

  1. 两个对象值转换的方法(BeanUtils.copyProperties与JSONObject.parseObject对比)

    将源对象赋值到目标对象方法: 方法一:BeanUtils.copyProperties(源对象, 目标对象); //org.springframework.beans.BeanUtils 方法二:目标 ...

  2. 关于SpringMVC注解

    1.@RequestMapping RequestMapping是一个用来处理请求地址映射的注解(将请求映射到对应的控制器方法中),可用于类或方法上.用于类上,表示类中的所有响应请求的方法都是以该地址 ...

  3. C#数组简介

    一.数组的定义 数组:是一种包含若干个变量的数据结构,这些变量可以通过索引进行访问. 数组的元素:数组中的变量就称为数组的元素. 元素类型:数组中的元素具有相同的数据类型,该数据类型就称为数组的元素类 ...

  4. 【思维题 集合hash 树上差分】11.5撸树

    要注重问题的转化和一些结论的推断 题目描述 要致富,先撸树. 一棵树的形状可以简化为一张 $N$ 个点 $M$ 条边的图,由于装备条件限制,你只有撸两次,也就是删去两条边,当这张图不联通时,就意味着树 ...

  5. spring boot自动配置实现

    自从用了spring boot,都忘记spring mvc中的xml配置是个什么东西了,再也回不去.为啥spring boot这么好用呢, 约定大于配置的设计初衷, 让我们只知道维护好applicat ...

  6. Ubuntu下删除mysql数据库

    Ubuntu下删除mysql数据库 sudo apt-get autoremove --purge mysql-server-5.7 sudo apt-get remove mysql-server ...

  7. MYSQL导入数据:Table XXX doesn't exist的解决

    数据表为Innodb引擎 data文件夹中存在数据表的frm文件,但在phpmyadmin中看不到这些表,于是采用导入sql文件的方式进行恢复 1.直接导入原数据表的sql文件,原frm文件不删除 出 ...

  8. Pytorch学习(一)—— 自动求导机制

    现在对 CNN 有了一定的了解,同时在 GitHub 上找了几个 examples 来学习,对网络的搭建有了笼统地认识,但是发现有好多基础 pytorch 的知识需要补习,所以慢慢从官网 API进行学 ...

  9. python模块之datetime

    相比于time模块,datetime模块的接口则更直观.更容易调用 datetime模块定义了下面这几个类: datetime.date:表示日期的类.常用的属性有year, month, day: ...

  10. cento命令之which、whereis、locate、find

    [which] 查看可执行文件的位置 语法: [root@localhost ~]# which 可执行文件名称 例如: [root@localhost ~]# which passwd /usr/b ...