设计原则:高内聚低耦合,开闭原则。
两大基础设计原则
在说面向对象设计的六大原则之前,我们先来说下程序设计的原则:模块内高内聚,模块间低耦合。我们在面向对象时只需把类看成模块,那么就容易理解封装等了。

说是七大原则,这里我先提出来一个:对扩展开放,对修改关闭。 为啥这么说,因为我们都知道软件是要改的。对扩展开放保证了可以增加功能,像泛型啦这些。对修改关闭保证了像前的兼容性,jdk7兼容jdk6这样。所以开闭原则围绕软件的整个生命周期。

从基础原则出发,产生六个具体的原则:
1.单一职责(一个方法或一个类只做一件事,为了模块内高内聚) 
2.迪米特法则(也叫最少知道原则,为了模块间低耦合) 
3.里氏替换(就是继承原则,子类可以无缝替代父类。很好的符合了开闭原则) 
4.依赖倒置(类之间的依赖通过接口实现,低耦合的同时对扩展开放) 
5.接口隔离(即把单个复杂接口拆分为多个独立接口,与上条共同实现面向接口编程) 
6.合成复用原则(即尽量使用合成/聚合的方式,而不是使用继承。主要为了防止继承滥用而导致的类之间耦合严重。记住只有符合继承原则时才用继承)

设计模式
我觉得程序员最好的沟通方式是代码,所以每个设计模式都是一个例子。所有例子都很方便,可以复制直接运行。因为对java熟悉,所以下面设计模式例子都是用java语言来实现的。

创建型模式(IOC:控制反转,就是创建分离的集大成)
1.Singleton:单例模式(全局只要一个实例) 
2.Prototype:原型模式(通过拷贝原对象创建新对象) 
3.Factory Method:工厂方法模式(对象创建可控,隐藏具体类名等实现解耦) 
4.Abstract Factory:抽象工厂模式(解决对象与其属性匹配的工厂模式) 
5.Builder:建造者模式(封装降低耦合,生成的对象与构造顺序无关) 
创建型模式的五种有各自的使用环境,单例和原型比较简单就不说了,工厂方法模式和建造者模式,都是封装和降低耦合有啥不同呢,其实工厂方法关注的是一个类有多个子类的对象创建(汽车类的各种品牌),而建造者模式关注的是属性较多的对象创建(能达到过程无关)。而抽象工厂模式关注的是对象和属性及属性与属性的匹配关系(如奥迪汽车与其发动机及空调的匹配)。

结构型模式(对象的组成以及对象之间的依赖关系)
1.Adapter:适配器模式(适配不同接口和类,一般解决历史遗留问题) 
2.Decorator:装饰器模式(比继承更灵活,可用排列组合形成多种扩展类) 
3.Proxy:代理模式(可以给类的每个方法增加逻辑,如身份验证) 
4.Facade:外观模式(对模块或产品的封装,降低耦合) 
5.Bridge:桥接模式(就是接口模式,抽象与实现分离) 
6.Plyweight:享元模式(相同对象的重用) 
7.Composite:组合模式(整体和部分相同时,如文件夹包含文件夹) 
我们可以看到适配器模式、装饰器模式、代理模式都可以用包装对象来实现(把对象作为一个属性放在用的对象里),所以模式关注的并不是实现,而是解决的问题。模式更多体现的是类与类之间的逻辑关系,比如代理模式和装饰器模式很像。但从字面就知道,代理是访问不了实际工作对象的,这是他们的区别。

行为型模式(即方法及其调用关系)
1.Strategy:策略模式(提供功能不同实现方式,且实现可选) 
2.Template Method:模板方法模式(相同流程用一个模板方法) 
3.Observer:观察者模式(用订阅-发布实现的被观察者变化时回调) 
4.Iterator:迭代器模式(一种内部实现无关的集合遍历模式) 
5.Chain of Responsibility:责任链模式(事件处理的分层结构产生的责任链条) 
6.Command:命令模式(将命令者与被命令者分离) 
7.Memento:备忘录模式(需要撤销与恢复操作时使用) 
8.State:状态模式 (当对象两种状态差别很大时使用) 
9.Visitor:访问者模式 (当对同一对象有多种不同操作时使用) 
10.Mediator:中介者模式(以中介为中心,将网状关系变成星型关系) 
11.Interpreter:解释器模式(常用于纯文本的表达式执行)

写完设计模式之后感觉设计模式更多的一种逻辑关系,如果代码中有这种逻辑关系就可以用了。记得需要时候再用,不能为了设计模式而设计模式。没有什么就是好的,最主要用起来舒服吧。
--------------------- 
作者:万明智 
来源:CSDN 
原文:https://blog.csdn.net/wanyouzhi/article/details/77248710 
版权声明:本文为博主原创文章,转载请附上博文链接!

面向对象的23种设计模式相关推荐

  1. C#面向对象17 23种设计模式

    1.简单工厂模式 using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...

  2. js实现23种设计模式(收藏)

    js实现23种设计模式 最近在学习面向对象的23种设计模式,使用java 和 javascript 实现了一遍,但是因为目前大三,还没有比较正规的大项目经验,所以学习的过程种我觉得如果没有一定的项目经 ...

  3. GOF 面向对象 23 种设计模式详解

    GOF 设计模式 笔记总结自 GOF 的 <Design Patterns - Elements of Reusable Object-Oriented Software>,Erich G ...

  4. 面向对象设计原则与23种设计模式

    面向对象概述 1.万物皆对象(Java反射原理-都是借助java.lang.class这个对象的属性.定义等实现) 2.面向对象的特征:封装(对象之间的隔离性.对象内部的属性封装).继承(类的重用,耦 ...

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

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

  6. 【设计模式】Java 23种设计模式对比总结

    一.设计模式的分类 创建型模式,共五种(1-5):工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种(6-12):适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组 ...

  7. 【java】java开发中的23种设计模式详解

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

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

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

  9. 23种设计模式简介_设计模式简介

    23种设计模式简介 本文是我们名为" Java设计模式 "的学院课程的一部分. 在本课程中,您将深入研究大量的设计模式,并了解如何在Java中实现和利用它们. 您将了解模式如此重要 ...

最新文章

  1. flowmap怎么做_Photoshop生成的流动贴图(flowmap)
  2. 在控制台中循环录入字符串,输入q时退出。 然后显示一个新的字符(Python)
  3. gprs连接中断记录_请收好!脉搏波血压计连接天天血压APP使用指南
  4. 数据流图 系统流程图 程序流程图 系统结构图联系与区别
  5. mysql过滤效率和java过滤效率_如何合理选择初中高效过滤器的效率?
  6. 修改环境变量后,导致一些常用命令失效,如ll,ls,vi不能用
  7. Ubuntu 环境初始化
  8. ACM 美素数 (没AC)
  9. mysql 游标动态传参数_Mysql 游标施用动态变量
  10. 安全防御——防病毒网关
  11. 机器学习可解释性(二) 之 可解释模型
  12. python manage.py makemigrations执行完无反应的解决办法
  13. 30天自制操作系统(day1)
  14. Python3,选择Python自动安装第三方库,从此跟pip说拜拜!!
  15. jshop的下载和导入
  16. Mysql数据库最佳性能优化
  17. 怎么免费测试短信验证码平台的安全稳定性?
  18. SEO优化 网站结构优化
  19. 【软件测试】如何测试人工智能软件?
  20. python-web开发[10]之初始前端

热门文章

  1. 别名、浅复制与深复制
  2. android的百度地图开发(二) 定位
  3. 停止了IIS服务为什么apache还是启动不了呢?
  4. 深圳科技园血案:程序员砍杀产品经理
  5. ASP.NET开发,从二层至三层,至面向对象 (4)
  6. linux下eclipse+pdt(PHP集成开发环境安装)
  7. 一维数组工具 OneArryasTools v1.1(doc生成正常)
  8. 操作系统实验报告2:Linux 下 x86 汇编语言1
  9. 2017\National _C_C++_C\4.小数第n位
  10. 数据库开发——MySQL——基本操作