Java24种设计模式的优点、缺点和适用环境总结
一、7个常用的面向对象设计原则
1、单一职责原则:
它是实现高内聚、低耦合的指导方针;一个对象应该只包含单一的职责,并且该职责被完整的封装在一个类中;
2、开闭原则:
指软件实体应尽量在不改变原有的代码的情况下进行扩展;
3、里氏替换原则:
在运用里氏替换原则时应将父类设计为抽象类或者接口,让子类继承父类或实现父类接口,并实现父类中声明的方法,在运行时子类实例替换父类实例,可以很方便的扩展系统的功能,无需修改子类原有的代码,添加一个新功能只需新增一个子类来实现。
4、依赖倒转原则:
它要求针对接口编程,不要针对实现编程;其在程序代码中传递参数或关联关系中应引用层次高的抽象层,即使用接口和抽象类进行变量类型声明、参数类型声明、方法返回值声明,以及数据转换声明等,而不要使用具体类来做这些事情。
5、接口隔离原则;
客户端不应该依赖那些不需要的接口,应尽量细化,同时接口中的方法应尽量少,每一个接口应该遵守单一职责,承担一种独立的角色。
6、合成复用原则:
优先使用组合、聚合,而不是用继承来达到复用的目的;降低类与类之间的耦合度,尽量减少一个类的变化对其他类造成影响;
7、迪米特原则:
一个模块发生修改时应尽量少的影响其他模块,扩展会相对容易,可以通过中间类来转发这个调用,来降低现有对象之间的耦合度,如果需要增加或删除,可修改中间类即可;
二、24种设计模式归纳:
创建型模式(6种):
简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式、单例模式
结构型模式(7种):
代理模式、适配器模式、装饰器模式、桥接模式、组合模式、亨元模式、外观模式
行为型模式(11种):
模板方法模式、策略模式、责任链模式、观察者模式、命令模式
中介者模式、迭代器模式、解释器模式、备忘录模式、访问者模式、状态模式
三、24种设计模式优缺点及适用场景
Java24种设计模式的优点、缺点和适用环境总结的更多相关文章
- java24种设计模式
一.设计模式定义 设计模式(Design Pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结,使用设计模式是为了可重用代码.让代码更容易被他人理解并且保证代码可靠性. ...
- LVS三种模式配置及优点缺点比较 转
LVS三种模式配置及优点缺点比较 作者:gzh0222,发布于2012-11-12,来源:CSDN 目录: LVS三种模式配置 LVS 三种工作模式的优缺点比较 LVS三种模式配置 LVS三种 ...
- Java开发中的23种设计模式详解
[放弃了原文访问者模式的Demo,自己写了一个新使用场景的Demo,加上了自己的理解] [源码地址:https://github.com/leon66666/DesignPattern] 一.设计模式 ...
- Java开发中的23种设计模式详解(转)
设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...
- Java开发中的23种设计模式(转)
设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...
- c#中的23种设计模式
C# 23种设计模式汇总 创建型模式 工厂方法(Factory Method) 在工厂方法模式中,工厂方法用来创建客户所需要的产品,同时还向客户隐藏了哪种具体产品类将被实例化这一细节.工厂方法模式的核 ...
- java 23种设计模式及具体例子 收藏有时间慢慢看
设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代 码可靠性. 毫无疑问,设计模式 ...
- JAVA:23种设计模式详解(转)
设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...
- 23种设计模式全解析 (java版本)
转自:http://blog.csdn.net/longyulu/article/details/9159589 其中PHP常用的五种设计模式分别为:工厂模式,单例模式,观察者模式,策略模式,命令模式 ...
随机推荐
- Connectivity
6492: Connectivity 时间限制: 1 Sec 内存限制: 128 MB提交: 118 解决: 28[提交][状态][讨论版][命题人:admin] 题目描述 There are N ...
- JAVA - Annotation 注解 入门
Java注解提供了关于代码的一些信息,但并不直接作用于它所注解的代码内容.在这个教程当中,我们将学习Java的注解,如何定制注解,注解的使用以及如何通过反射解析注解. Java1.5引入了注解,当前许 ...
- IDEA 官方背景与修改jsp模板以及字体大小
一.官方背景切换 方法一:先打开file找到Settings 如图: 也可以用快捷方式打开:Ctrl+alt+s 打开 找到Editor点击进入 ,再然后找Color Scheme 可以看到如下图 ...
- cocos2dx观察者模式EventListenerCustom的使用(代替NotificationCenter)
在cocos2dx 3.x版本已经被弃用,改用EventDispatcher代替. 观察者模式是MVC模式的一种,一个model可以对应很多个观察者view,当model收到事件通知时,对应的view ...
- 【转】pDc->SelectObject(pOldBrush)恢复画刷
请看下面的代码: CDC *pDc=new CClientDC(this); CBrush brush; brush.CreateSolidBrush(RGB(0,255,0)); CBrush * ...
- 关键字final
final数据 对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改:如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象.再次赋值将引起编译报错. 当f ...
- MySQL左右连接查询中的NULL的数据筛选问题
这里使用左连接为例子,对于左连接是将左边表的数据显示,右边表中如果没有对应的数据则使用null填充. game表: game_type表: SELECT g.name,g.type_id,t.type ...
- php代码压缩
php代码压缩,除可以使用token_get_all进行压缩之外,还可以使用系统自带的函数 php_strip_whitespace (PHP 5) php_strip_whitespace — ...
- linux 下 docker-compose安装
docker和dockers-compose的版本兼容对照 以下是我的服务器的相关信息 linux版本 [root@izbp16fm097gaw3tdaog2wz bin]# cat /proc/ve ...
- APP客户端图片上传PHP接口
1.客户端 file_get_contents($_FILES['img']['tmp_name']) //获取临时目录下的上传文件流,加密传给接口 2.接口处理端 $img = file_get ...