设计模式:总结

设计模式总结

一、设计模式分类

  2.1、按类型分为:

     创建型模式:工厂方法抽象工厂模式原型模式单例模式建造者模式

结构型模式:适配器组合模式装饰器模式桥接模式外观模式FlyWeight模式代理模式

行为型模式:迭代器模板方法策略模式仲裁者模式访问者模式命令模式解释器模式观察者模式责任链模式状态模式备忘录模式

   2.2、设计模式的几种原则:

1、开闭原则(Open Close Principle)
2、里氏代换原则(Liskov Substitution Principle)
3、依赖倒转原则(Dependence Inversion Principle)
4、接口隔离原则(Interface Segregation Principle)
5、迪米特法则(最少知道原则)(Demeter Principle)
6、合成复用原则(Composite Reuse Principle)

   2.3、设计模式关系

二、设计模式感想

    呼,长出了一口气,很久以前就对设计模式痴迷至深,奈何第一没有好的资料,第二很多东西看了就忘,没能好好的整理下来,如今想想也是个遗憾。前几天突然萌生了写一下设计模式这样的想法,现有的文章和资料很多,能够写完这些设计模式,网上的资料,以及一些书籍对我的帮助都很大,可以说这23中设计模式,我是一边学习一边写出来的,这些程序在书本的启发之下都是我自己一点点写出来的,没有参考任何的资料,所以理解的还比较深。就我而言,到了现在差不多十天左右的时间,对于设计模式可谓是有了更深层次的认识。其实设计模式这个词汇也是翻译过来的最成功的一个词汇之一。在我们的程序设计之中,就是应该有这样的高屋建瓴的架构和模式才能使得我们的程序更加的具有复用性和扩展性。仔细思考这23种设计模式,可以说都是为了提高代码的可读性、可扩展性、可复用性、类的可替换性、组件化、可移植性等等特性。通过接口、抽象类、继承、实现、委托、抽象、面向抽象(接口)编程、多态、重载、重写等方式使得代码的这些特性得以彰显,可以说只有深刻的理解了这些概念背后的哲学思想才能更好地理解设计模式。在设计模式之中也有很多的思想,比如可以使用委托的不要使用继承、开闭原则,面向扩展开放,面向修改关闭,里氏代换原则,父类一定能被子类代替并使用,反之则不然,面向抽象(接口)编程,功能层次和实现层次分离(桥接模式)、高内聚低耦合等思想,这些思想都是宝贵的,正是因为这样的思想的存在才使得代码的更新换代的时候能够尽可能少的甚至不用修改以前的代码,直接加入新的内容。提高软件的开发周期,便于维护和升级,便于查找和纠错,易于扩展和使用。

同样的设计模式主要分为三大类,创建型的、行为型的、结构型的,我们可以简单的这样分类,只不过这样的分类似乎并不准确,不能一语道出所有的本质,因为我前面就说过,设计模式是相互关联的,有的设计模式内部其实是使用了别的设计模式作为支撑的,但是大体上这样的一种划分便于我们去记忆,仅此而已。

仔细的回顾一下我们前面学习的设计模式,看看我们能想到多少,从迭代器开始,我们将类中数据结构的遍历和类的功能实现分离出来,本质上使用了工厂模式。其次我们学习了适配器模式,它将不同的接口进行适配,从而便于版本的兼容性以及其他功能,然后我们学习了模板方法,使用模板面向抽象编程,便于新的子类的实现和管理;之后是工厂方法,其实借用了模板方法来创建产品,是一种非常重要用处很广的一种方法;然后我们学习了单例模式,有懒汉式、饿汗式等,生成关于某个类全局唯一的对象,注意多线程的影响;之后是原型模式,用来复制复杂的对象,使用了clone方法,然后是Builder模式,用一个新的类对已有的抽象接口进行整合和编程,从而构建出我们想要的东西;然后是抽象工厂模式,使用了工厂模式,组合模式等模式,面向抽象编程,将抽象零件组装成抽象产品,便于具体工厂的创建,提高了代码的组件化和复用性;然后是桥接模式,将类的功能层次和实现层次分割开来,便于对应的扩展和使用;然后是策略模式,可以整体的替换策略,使用也很广泛;然后是组合模式,保证了同根同源(一致性、透明性),听过委托添加自己构成递归,树形结构,将具有树形特点的对象组合起来;然后是装饰器模式,和组合模式的结构类似,同样是递归结构,从而可以不断地装饰,增加新的功能,很有用;接着是Visitor访问者模式,通过在类外访问类中的数据结构从而得到想要的结果,便于程序的可扩展性和组件化。接着是责任链模式,推卸责任,根据问题的大小来考虑自己是否要处理,本质是链表,便于职责分明;然后是外观模式,通过整合各个类之间的调用关系,组建成了统一的接口(API),便于外部类的调用;接着是仲裁者模式,将很多类之间互相关联的关系交给仲裁者去处理,省去了各个类之间的嵌套和调用,有利于高内聚和低耦合,思路清晰,便于扩展;然后是观察者模式,或者叫做发布订阅模式,通过互相委托从而能够在被观察的类发生改变的时候得到相应的改变的信息并且处理;然后是备忘录模式,将对象在某一时刻的状态保存下来,便于恢复,在游戏中使用的很多;接着是状态模式,将状态当做类,从而职责分明,解除了很多繁琐的if和else这些分支逻辑,便于扩展。然后是FlyWeight模式,轻量级对象,通过共用不变对象来实现,然后是Proxy代理模式,懒加载真正的服务器,加快访问速度,代理是帮助服务器代理的;然后是命令模式,将命令当做类,通过保存一些列命令,从而能够随时执行这些命令,需要清楚命令的本质就是一些操作和数据。最后是解释器模式,利用编译原理的方法,来更高层次的封装代码,将自己开发的Java代码当做编译系统,从而不用修改Java代码只修改更高语言层次的代码就能实现不同的功能。这就是我们的设计模式。

原文地址:https://www.cnblogs.com/zyrblog/p/9255224.html

时间: 2024-10-14 14:58:18

设计模式:总结的相关文章

Java设计模式——创建型模式之单例模式

一.概述 作为第一个出场的设计模式,有必要先介绍一下设计模式(引用自百度百科): 设计模式(Design Pattern)是一套被反复使用.多数人知晓的.经过分类的.代码设计经验的总结. 使用设计模式的目的:为了代码可重用性.让代码更容易被他人理解.保证代码可靠性. 设计模式使代码编写真正工程化:设计模式是软件工程的基石脉络,如同大厦的结构一样. 设计模式概念的介绍,参见:http://blog.jobbole.com/101076/ 其中涉及的设计原则的概念,参见随笔:http://www.c

10大APP界面框架设计模式详解

随着移动互联网的发展,移动app已经成为了每个互联网公司的标配了,那作为产品经理,我们如何设计出更加符合用户体验的app产品呢?今天和大家分享的就是10中最常见的app界面光甲设计模式,一起来看看吧. 1.标签导航 标签导航是十大界面框架设计里最常用的界面框架设计,也是被业界之内公认的一种普遍使用的页面框架设计.那么这种页面框架设计在作业方面对一个用户来说也是最常见的一种页面框架设计,比如说微博.微信.手机百度.支付宝.淘宝,这些我们所谓的超级APP都是运用的标签导航,无一例外.从这个角度也可以

[js高手之路]设计模式系列课程-组合模式+寄生组合继承实战新闻列表

所谓组合模式,就是把一堆结构分解出来,组成在一起,现实中很多这样的例子,如: 1.肯德基套餐就是一种组合模式, 比如鸡腿堡套餐,一般是是由一个鸡腿堡,一包薯条,一杯可乐等组成的 2.组装的台式机同理,由主板,电源,内存条,显卡, 机箱,显示器,外设等组成的 把一个成型的产品组成部件,分成一个个独立的部件,这种方式可以做出很多灵活的产品,这就是组合模式的优势 比如:家用台式机电脑,要求配置比较低, 这个时候只需要主板+电源+内存条+机箱+显示器+外设就可以了,不需要配置独立显卡 鸡腿堡+鸡翅+紫薯

Happy 设计模式之适配器模式(JAVA)

设计模式-适配器模式 适配器模式定义 适配器模式,将一个类的的接口转换成客户或者产品希望的接口形式,就是原本不兼容或者甚至不相干的接口不能一起工作的接口一起工作,完成需求或者客户的需求. 适配器模式的使用场景 1.当你使用一个已经存在的类,而他的接口不符合你的需求. 2.你想要创建一个复用的类,该类可以与其相关的类或者不可见的类协同工作. 适配器角色 Target:目标接口 TargetImpl:目标实现类 Adapter:适配器 Adaptee:被适配者 代码解析: package com.d

设计模式 2/23 工厂模式

工厂模式是最常用的设计模式之一,用好了,代码优雅,可维护性高,对系统设计会上一个台阶 为什么这么说,因为工厂模式可以牵扯出抽象工厂模式,也有大家都会聊到的简单工厂模式 我们要了解一点,23中设计模式中,不包含简单工厂模式,之所以大家会去聊这个,四个字,渐进明细 通过对简单工厂模式的了解,我们引入工厂这个词,不然一个写代码的,天天给他讲工厂,工厂,工厂,西厂,东厂,会晕 同时,通过逐步的深入,从简单工厂,到工厂模式,再到抽象工厂,渐进明细的过程,逐步深入的理解,比较优劣,择优而为我们所用. 试想我

Java设计模式学习笔记,一:单例模式

开始学习Java的设计模式,因为做了很多年C语言,所以语言基础的学习很快,但是面向过程向面向对象的编程思想的转变还是需要耗费很多的代码量的.所有希望通过设计模式的学习,能更深入的学习. 把学习过程中的笔记,记录下来,只记干货. 第一部分:单例模式的内容 单例模式:类只能有一个实例. 类的特点:1.私有构造器:2.内部构造实例对象:3.对外提供获取唯一实例的public方法. 常见的单例模式实现有五种形式: 1.饿汉式. 2.懒汉式. 3.双重检查锁式. 4.静态内部类式. 5.枚举式. 以下分别

设计模式之单列模式

设计模式之单列模式 1,何为单列模式? 即singleton 在某个类采用了单列模式之后  其只能有一个实列对象 ,并且这个实列对象只能有内部自己创建并提供给外部的调用. 2.实现单列模式的方法 分为 :饿汉式 ,懒汉式 下面为饿汉式实现代码: public calss Singleton1{ //将构造函数私有化 防止外部通过new来创建对象 private Singleton1(){ } //创建一个私有静态变量并直接初始化 类加载的时候直接创建对象 private static Singl

设计模式之原型模式(Prototype)

1.初识原型模式 大家都知道连锁机构是现在灰常流行的商业模式,比如咖啡之翼,那么假设咖啡之翼要在长春新建立一个分店,所经营的产品和以前在其他的城市已经存在的店经营的产品差不多,那么面向对象开发的角度怎么解决这个问题呢?难道要重新的实例化一个咖啡之翼的店??这显然不太好吧,咖啡之翼里面经营的产品(假设是属性吧)都需要重新写,这就是在做大量的重复工作啊,这显然是不符合OO开发思想的.遇到这样的情况,并不是重新建立一个类来解决这样的问题,而是通过设计模式中的"原型模式"来解决这种问题.是这种

对设计模式的总结之简单工厂与策略模式

前言 面向对象编程追求的本质-提高扩展性.可维护性.灵活性和复用性.合理利用面向对象6个原则,能够很好的达到要求.如何利用好就是至关重要的了,前人总结了23+个设计模式能够让初学者更容易学到其中的精髓,本文就说说我对本人对简单工厂模式.策略模式的见解. 简单工厂模式与策略模式 简单工厂模式 工作中,常常遇到需要做一个功能(鸭子),这个功能中含有可控个数的子操作功能(鸭子叫,鸭子跑,鸭子飞),而且子功能在不同的情况下处理方式又不相同(成年鸭子/小鸭子叫,成年鸭子/小鸭子跑,成年鸭子/小鸭子飞).我

设计模式——介绍与工厂模式(扁平管理模式VS职业经理人模式)

本文主要对设计模式进行大概解说.特别是对工厂模式进行简明的解析: 一.设计模式的分类 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元模式. 行为型模式,共十一种:策略模式.模板方法模式.观察者模式.迭代子模式.责任链模式.命令模式.备忘录模式.状态模式.訪问者模式.中介者模式.解释器模式. 事实上还有两类:并发型模式和线程池模式. 二.设计模式的六大原则 1.开闭原则(Op