设计模式对比和总结

最近看完《大话设计模式》,又结合了一些其他资料,总结成表格。

一 设计模式

1设计模式之间的关系:

2设计模式总概况:

3设计模式对比

二设计原则:

1单一职责原则

就一个类而言, 应该仅有一个引起它变化的原因。

是如果你能够想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责。软件设计真正要做的许多内容,就是发现职责并把那些职责相互分离。

2开放封闭原则

是说软件实体(类、模块、函数等等)应该可以扩展,但是不可修改。

无论模块是多么的封闭,都会存在一些无法对之封闭的变化。既然不可能完全封闭,设计人员必须对于他设计的模块应该对哪种变化封闭做出选择。他必须先猜测出最有可能发生的变化种类,然后构造抽象来隔离那些变。

3依赖倒转原则

A.高层模块不应该依赖低层模块。两个都应该依赖抽象。

B.抽象不应该依赖细节。细节应该依赖抽象。

4里氏代换原则(LSP)

子类型必须能够替换掉它们的父类型。

在软件里面把父类都替换成它的子类,程序的行为没有变化。只有当子类可以替掉父类,软件单位的功能不受到影响时,父类才能真正被复用,而子类也能够在父类的基础上增加新的行为。由于子类型的可替换性才使得使用父类类型的模块在无需修改的情况下就可以扩展。

5迪米特法则(LoD)

如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。

6合成复用原则(Composite Reuse Principle)

合成复用原则就是指在一个新的对象里通过关联关系(包括组合关系和聚合关系)来使用一些已有的对象,使之成为新对象的一部分;新对象通过委派调用已有对象的方法达到复用其已有功能的目的。简言之:要尽量使用组合/聚合关系,少用继承。

时间: 2024-08-06 23:08:44

设计模式对比和总结的相关文章

23种设计模式对比与总结

设计模式总结:便于快速查看 前言:个人觉得设计模式就是各个对象在不同的时机.不同的调用方被创建,组合结构和封装的侧重点有些不同,从而形成了各个模式的概念. 1.      简单工厂模式 通过在工厂类中进行判断,然后创建需要的功能类. 优点:不必使用具体的功能类去创建该类的实例.缺点:新增一个功能类就需要在工厂类中增加一个判断. 2.      策略模式 假设一个功能类是一个策略,调用的时候需要创建这个策略的实例,传进一个类似策略控制中心的方法中,然后通过策略基类调用这个传进去的实例子类的方法.

8种移动APP导航设计模式对比

当我们确定了移动APP的设计需求和APP产品设计流程之后,开始着手设计APP界面UI或是APP原型图啦.这个时候我们都要面临的第一个问题就是如何将信息以最优的方式组合起来? 也许我们对比和了解了其他一些常用的APP导航设计模式. 而且良好的APP导航设计模式决策对整个app的核心体验起到关键作用. 有一些优秀的app基于这些模式做了一些创新的优化方案,本文总结了目前通用且流行的模式,并讨论了这些模式适用的场景,希望帮助交互设计师更快的作出较合理的信息组织决策. 先来看看8种移动APP导航设计模式

结构型设计模式对比 设计模式(十六)

结构型设计模式 结构型模式关注于整体最终的结构,通过继承和组合,构建出更加复杂的结构 进而提供更加强大的逻辑功能 七种结构型模式 适配器模式(Adapter Pattern) 组合模式(Composite Pattern) 装饰器模式(Decorator Pattern) 代理模式(Proxy Pattern) 桥接模式(Bridge Pattern) 外观模式(Facade Pattern) 享元模式(Flyweight Pattern) 所有的结构型设计模式在逻辑上都各自不同程度的隐含了“间

Android 设计模式对比

引言: Android框架的发展的过程就是一个不断化繁为简的过程,大家都在研究如何正确方便高效的规范代码.当然这条路也永远不会停止,就像新的芽儿,随着时间的流逝,每天都在长出新的枝叶,每天都在成长.对于技术,每次新框架的提出都在剔除旧框架的诟病和痛点,演变成更方便,更高效,更简洁的新框架,然后新的框架在具体使用中又会带来新的诟病和痛点,反反复复,无穷尽也......从开始使用MVC到使用MVP,从MVP到MVVM,每次框架的提出都有让我们眼前一亮的东西,但具体使用中确还是存在很多的痛点,似乎一直

部分设计模式对比分析

桥接模式与装饰者模式区别: 桥接模式类图 装饰者模式类图 1.定义: (1)桥接模式:将抽象部分与它的实现部分分离,使它们都可以独立地变化 (2)装饰者模式:动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活 2.“独立部分”不同: (1)桥接模式:抽象类和实现接口类是相互独立的,降低了类之间的耦合度 (2)装饰者模式:具体构件以及抽象装饰类都继承自抽象构件,所以仍是紧耦合 3.角度不同: (1)桥接模式:对象自身有沿着多个维度变化的趋势, 本身不稳定 (2)

设计模式学习笔记(二)--简单工厂模式和工厂模式

老生长谈的两个设计模式了,这里把这两个设计模式对比着来总结一下. 什么是简单工厂模式? 简单工厂模式:根据传入工厂类的参数动态决定要创建哪一个产品类的实例. UML图如下(以实现一个计算器为例): 简单工厂模式的Java代码实现如下: 1 package designPattern; 2 /** 3 * 简单工厂模式 4 * @author yiRain 5 * 6 */ 7 public class SimpleFactory { 8 9 public static void main(Str

不可错过的手机APP常见8种界面导航样式

前言:相信每一个移动开发工程师都会遇到,当一个项目开发启动时,需要考虑搭建怎么的框架.一个好的框架,也会决定着一个APP的前途与命运.框架的风格,现在常见的有八种:标签导航.舵式导航.抽屉导航.宫格导航.组合导航.列表导航.tab导航.轮播导航.最近在网上收集到一些资料,正好和大家分享一下,感谢原作者的贡献. 当我们确定了移动APP的设计需求和APP产品设计流程之后,开始着手设计APP界面UI或是APP原型图啦.这个时候我们都要面临的第一个问题就是如何将信息以最优的方式组合起来? 也许我们对比和

C#源码500份

C#源码500份 C Sharp  短信发送平台源代码.rar http://1000eb.com/5c6vASP.NET+AJAX基础示例 视频教程 http://1000eb.com/89jcC# Winform qq弹窗 360弹窗 http://1000eb.com/89jf精华志 C#高级编程(第七版)源码 http://1000eb.com/89k3C#网络应用编程教案及代码.rar http://1000eb.com/89khIPhone远程桌面xp控制+Desktop+Conne

Java程序员注意了:奠定你发展的黄金五年,你准备如何把握好?

在Java业界流行着一种说法--黄金5年,就是从程序员入职时算起,前五年的工作选择直接影响整个职业生涯的职业发展和薪资走向.如何把握这五年,从一个刚入行的菜鸟蜕变成一个处事不惊的大佬,这是一个涉及到自身的专业知识储备和选择的难题,那么,一个Java程序员如何做才能完成从入行到大佬的晋升之路呢? 参加工作1-2年之间 在这段时间里,想必对Java已经有了一个深入的了解.首先,你要非常熟悉设计模式,看一些关于代码编写优化的书,提高你的代码能力,能够写出一手优雅的代码:其次,你在工作过程中肯定接触过并