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常用的五种设计模式分别为:工厂模式,单例模式,观察者模式,策略模式,命令模式 ... 
随机推荐
- Beta冲刺(周四)
			这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1 这个作业要求在哪里 https://edu.cnblo ... 
- 爬虫1_python2
			# -*- coding: UTF-8 -*- # python2爬虫 import urllib f = urllib.urlopen("http://www.itcast.cn/&quo ... 
- JavaScript中面向对象的三大特性(一个菜鸟的不正经日常)
			经过几天的学习,把jQuery给啃会了,但是运用的还不算特别熟练,总感觉自己在JavaScript方面的基础十分欠缺,所以继续拾起JavaScript,开始更好的编程之旅~ 今天学的是JavaScri ... 
- A. Vitya in the Countryside
			A. Vitya in the Countryside time limit per test 1 second memory limit per test 256 megabytes input s ... 
- CF-1140 E - Palindrome-less Arrays
			题意:给定一个没有填完的序列,数值为-1表示你可以用 1~k 中的数字去覆盖它,求将该序列填充后,不存在长度为奇数的回文串的方案数 分析: 使之不存在长度为奇数的回文串,只需要满足不存在长度为3的回文 ... 
- Python数据分析【炼数成金15周完整课程】
			点击了解更多Python课程>>> Python数据分析[炼数成金15周完整课程] 课程简介: Python是一种面向对象.直译式计算机程序设计语言.也是一种功能强大而完善的通用型语 ... 
- python入门:输出1-10以内除去7的所有数(经典)
			#!/usr/bin/env python # -*-coding:utf-8 -*- #输出1-10以内除去7的所有数(经典) """ 给kaishi赋值为1,whil ... 
- DeepFaceLab小白入门(5):训练换脸模型!
			训练模型,是换脸过程中最重要的一部分,也是耗时最长的一部分.很多人会问到底需要多少时间?有人会告诉你看loss值到0.02以下就可以了.我会告诉你,不要看什么数值,看预览窗口的人脸.看第二列是否和第一 ... 
- day24 02 单继承(派生)
			day24 02 单继承(派生) 1.首先来看一个简单的例子 比如: 狗类的属性有:吃,喝,看门 鸟类的属性有:吃,喝,下蛋 看门和下蛋就是这两种动物不同的属性,而吃喝是两个共同的属性 以下代码实现了 ... 
- LeetCode(138) Copy List with Random Pointer
			题目 A linked list is given such that each node contains an additional random pointer which could poin ... 
