设计模式总结之中的一个三五

引言

? ? ?什么是设计模式(What)?

? ? ? ?设计模式是前人实际经验的积累和总结,都是着重解决实际的问题。

? ? ? ?学习设计模式的目的(Why)?

? ? ? ?通过学习设计模式来提高写出的代码的可维护性、可复用性、可扩展性和灵活性。也就是说让系统可以达到“高内聚、低耦合”的状态。

? ? ? ?如何学习设计模式(How)?

? ? ? ?设计模式是前人的实践经验总结出来的,六大设计原则,23种设计模式;尽管每种模式都有固定的实现方式。可是设计的原则是活的。所以在学习设计模式的过程中要有所思、有所想、有所悟,有良好的理论基础。这样我们在实际运用中才干得心应手。

?

? ? ? ?以下来说说设计模式的一、三、五:

? ?

设计模式之中的一个

? ?一抽象:

? ? ? ??抽象是从众多的事物中抽取出共同的、本质性的特征,而舍弃其非本质的特征。比如苹果、香蕉、生梨、桃子等,它们共同的特性就是水果。得出水果概念的过程,就是一个抽象的过程。抽象化的目的是为了使复杂度降低。

设计模式是面向对象编程,而面向对象编程的基础就是类的抽象化。

所以要想学好设计模式。就要学好面向抽象编程的思想。

? ??

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDg1MzcwMQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" />

? 一法则:

? ? 迪米特法则

? ??迪米特法则(Law of Demeter)又叫作最少知识原则(LKP,Least Knowledge Principle),就是说一个对象应当对其它对象有尽可能少的了解。类与类之间的了解的越多,关系越密切,耦合度越大,当一个类发生改变时。还有一个类也可能发生变化。

? ? 核心思想:最少依赖

? ? 详细介绍:设计模式六大原则——迪米特法则(LOD)

设计模式之三

?三大特性

? ? 1、封装

? ??把事物的状态和行为的实现细节封装在类中,形成一个可以反复使用的“零件”。被成千上万对其内部毫不知情的工作人员使用。

? ? 2、继承

? ? “Is-a”的的关系,表示一个类是还有一个类的特殊种类。

? ? 3、多态

? ? 不同的对象可以运行同样的动作,但要通过它们自己的实现代码来运行。

?三大类别

? ? 1、创建型模式

? ? 处理对象的创建过程。

创建型模式将类的实例是如何被创建和放在一起的这些关于详细类的的信息封装起来。创建一个公用的“零件”,也就是接口,来和外部链接。这样降低了类与类之间的紧密程度。内部完整——高内聚,与外部的连接灵活——低耦合。

? ? 例:创建一个抽象的动物类。仅仅知道动物类是有生命的个体。都可以进行新陈代谢和生殖。

? ? 2、结构型模式

? ? 用来处理类或者对象的组合。就是描写叙述类和对象之间如何组织起来形成大的结构,从而实现新的功能。

? ? 例:创建型创建了一个抽象的动物类,那么结构型模式就是对这个类进行修饰加工。加上强健的四肢,如:狮子,加上翅膀:如鹰,加上鳃:如鲤鱼。

??
?3、行为型模式

?用来对类或者对象如何交互和如何分配职责进行描写叙述。

?例:结构型模式对创建的类进行了修饰加工,而行为型模式则是赋予被修饰后的类一些特性。例:对狮子的四肢进行合理设计,从而让狮子可以在陆地上风驰电掣;对鹰的翅膀进行合理设计,让鹰可以翱翔九天。对鱼的鳃进行合理设计,让鲤鱼可以畅游海底。

? 23中设计模式的详细分类:

??

?

设计模式之五

?五大原则?

? ? ? ?1、开放-闭合原则

??软件实体(类、模块、函数等等)应该可以扩展。可是不可修改。意思就是在一个系统中,添加程序的功能时,不应该修改原有代码。仅仅要添加新的代码就可以;开闭原则是核心原则。一切的一切都环绕开闭原则展开的。

? 详细介绍:设计模式六大原则——开放-闭合原则(OCP)

? ? ? ?2、依赖倒置原则

??细节是多变的。而抽象是相对稳定的。所以我们编程的时候要注重抽象的编程,而非细节编程。假设说开闭原则是目标,依赖倒转原则是到达"开闭"原则的手段。

? 详细介绍:设计模式六大原则——依赖倒置原则(DIP)

? ? ? ? ?3、里氏代换原则

? 子类型必须可以替换掉他们的父类型。限制变化影响的范围。

? 详细介绍:设计模式六大原则——里氏代换原则(LSP)

? ? ? ?4、合成/聚合复用原则

??要尽量使用合成和聚合,尽量不要使用继承。

? 详细介绍:设计模式六大原则——合成/聚合复用原则(CARP)

? ?里氏代换原则和合成/聚合复用原则都是对开放闭合原则使用时的规范。

? ? ? ? 5、单一职责原则

? ?就一个类而言,应该仅有一个引起它变化的原因。通俗的说。一个类仅仅负责一项职责。

? ?详细介绍:设计模式六大原则——单一职责原则(SRP)

? 五大关系

? 在设计模式中涉及的五种关系:依赖、关联(聚合、组合)、实现、继承,用设计模式中一张经典的图来作解释:

总结

学习设计模式的基础就是理解设计原则,我们学的全部的设计模式都离不开设计原则,都是依照一定的设计原则进行的,所以设计原则是一定要掌握的。不管你在实际项目中是否应用了设计模式。设计原则是一定要遵守的编程准则。

??

? ? ??

? ? ? ?

? ? ? ??

? ? ?

原文地址:https://www.cnblogs.com/zhchoutai/p/8504140.html

时间: 2024-08-29 01:24:10

设计模式总结之中的一个三五的相关文章

Cocos2D-x设计模式发掘之中的一个:单例模式

http://www.tuicool.com/articles/NBRn2m

实战Java虚拟机之中的一个“堆溢出处理”

从今天開始.我会发5个关于java虚拟机的小系列: 实战Java虚拟机之中的一个"堆溢出处理" 实战Java虚拟机之二"虚拟机的工作模式" 实战Java虚拟机之三"G1的新生代GC" 实战Java虚拟机之四"禁用System.gc()" 实战Java虚拟机之五"开启JIT编译" 以下说说[实战Java虚拟机之中的一个"堆溢出处理"] 在Java程序的执行过程中,假设堆空间不足.则有可能抛

使用Jquery+EasyUI进行框架项目开发案例解说之中的一个---员工管理源代码分享

使用Jquery+EasyUI 进行框架项目开发案例解说之中的一个 员工管理源代码分享 在開始解说之前,我们先来看一下什么是Jquery EasyUI?jQuery EasyUI是一组基于jQuery的UI插件集合,而jQuery EasyUI的目标就是帮助web开发人员更轻松的打造出功能丰富而且美观的UI界面.开发人员不须要编写复杂的javascript,也不须要对css样式有深入的了解,开发人员须要了解的仅仅有一些简单的html标签.jQuery EasyUI为我们提供了大多数UI控件的使用

【美妙的Python之中的一个】Python简单介绍及环境搭建

美妙的Python之Python简单介绍及安装         简而言之: Python 是能你无限惊喜的语言,与众不同.             1.Python:          Python英文意思为蟒蛇,故又称为蟒蛇语言,在图标设计上有所体现,贵铎·范·罗萨姆(Guido van Rossum)于1989年创立.Python的特质,简单,优雅,健壮,继承传统编程语言的强大性与通用性,同一时候兼具简单脚本的简单性.         Python的哲学:仅仅用一种方法,最好是仅仅有一种方法

【iOS与EV3混合机器人编程系列之四】iOS_WiFi_EV3_Library 剖析之中的一个:WiFi UDP和TCP

在上一篇文章中.我们通过编写EV3 Port Viewer项目实现了iOS监測EV3的实时端口数据. 程序最核心的部分就是我们的开源码库iOS_WiFi_EV3_Library. 那么,在本文中,我们将具体介绍我们这个库的编写.为了完毕这个库,本人參考了网上许多资料,主要包括EV3的源码,win版本号的代码库以及Monobrick相关以及网上的各种资料,在此就不一一列举了. 因为水平有限,本代码库还存在各种问题,望使用的读者见谅. 大家也能够在这个基础之上自己进行改造完好. 为了具体说明代码库的

netty深入学习之中的一个: 入门篇

netty深入学习之中的一个: 入门篇 本文代码下载: http://download.csdn.net/detail/cheungmine/8497549 1)Netty是什么 Netty是Java NIO之上的网络库(API).Netty 提供异步的.事件驱动的网络应用程序框架和工具,用以高速开发高性能.高可靠性的网络服务器和客户端程序. 2)Netty的特性 统一的API.适用于不同的协议(堵塞和非堵塞).基于灵活.可扩展的事件驱动模型.高度可定制的线程模型.可靠的无连接数据Socket支

使用Cloudsim实现基于多维QoS的资源调度算法之中的一个:配置Cloudsim环境

Cloudsim是一款开源的云计算仿真软件,它继承了网格计算仿真软件Gridsim的编程模型,支持云计算的研究和开发.它是一个自足的支持数据中心.服务代理人.调度和分配策略的平台,支持大型云计算的基础设施的建模与仿真,而且能够在Windows和Linux上跨平台执行. 本文介绍的是利用Cloudsim云仿真平台对资源调度算法进行仿真.当中包含Cloudsim环境的配置,资源调度算法的嵌入和仿真结果的分析. 1.首先介绍Cloudsim环境的配置 1.1.Cloudsim的执行须要Java环境,所

mybatis学习笔记(14)-查询缓存之中的一个级缓存

mybatis学习笔记(14)-查询缓存之中的一个级缓存 mybatis学习笔记14-查询缓存之中的一个级缓存 查询缓存 一级缓存 一级缓存工作原理 一级缓存測试 一级缓存应用 本文主要讲mybatis的一级缓存.一级缓存是SqlSession级别的缓存. 查询缓存 mybatis提供查询缓存.用于减轻数据压力,提高数据库性能. mybaits提供一级缓存,和二级缓存. 一级缓存是SqlSession级别的缓存.在操作数据库时须要构造sqlSession对象,在对象中有一个数据结构(HashMa

VC断点失败的原因之中的一个

VC断点失败的原因之中的一个 flyfish 2014-10-23 情景 再debug状态下仅仅有一个cpp文件.命中不了断点. 提示 能够 同意源码与原始版本号不同 不採用,防止出现未知的隐患 问题分析 1 头文件(.h)和实现文件(.cpp),经过编译生成OBJ文件.OBJ文件通过连接(Link)生成EXE文件 简化: .h+.cpp -> obj -> exe 2 PDB文件存储了EXE文件的全部调试信息.每当生成OBJ 文件时.编译器都会将调试信息合并到PDB 中 简化: .h+.cp