Java设计模式论述

时间:2020-12-27 00:46:28

为何须要设计模式:

模式是做事的方法,是实现目标,研磨技术的方法。这样的对高效技术不懈追求的思想,广泛见于诸多领域,比如制作精美佳肴的过程。对于不论什么一种迈向成熟的全新技艺,身处这个行业的人都须要寻找通用而有效地的方法,达到我们的目标,解决不同场景的问题。

设计模式是一种模式,在面对对象的语言中,它运用类与他们的方法来达到目标。开发者一般会在学习编程语言,并在编写一段时间的代码之后才会考虑设计。我们羡慕某些人代码的简洁而有用,我们想学习他们让代码拥有简洁之美,须要用到设计模式,设计模式能够提升代码的水准,使用更少的类完毕目标。模式是思想的提现,而非详细的实现。

依照意图能够将设计模式分为5类,

接口型模式:适配器模式,外观模式,合成模式,桥接模式

类的接口是同意其它类对象訪问的方法与字符集。接口通常代表一种承诺,即方法须要实现接口方法名表示的操作,遵循代码凝视、測试和其它文档说明,类的实现就是位于方法体中的代码。接口的功能在于它描写叙述了在类协作中它所期望与不期望的行为。接口与抽象类非常相似,定义行为却不提供实现。

适配器模式:适配类的接口以匹配client期待的接口。

外观模式:为一组类提供一个简单接口。

合成模式:为当个对象与复合对象提供统一的接口。

桥接模式:解除抽象与实现之间的耦合,使得二者可以独立演化。

每一个设计模式都是解决不同场景的问题,面向接口的模式适用于须要对一个类或一组类的方法进行定义或重定义的场景。比如某个类实现了我们须要的服务,可是方法名称却和client的期望不符合,这就须要适配器模式。

职责型模式:单例模式,观察者模式,中介者模式,代理者模式,职责链模式,享元模式

不管一个类怎样限制它的成员,面对对象开发通常将职责分散到各个独立的对象中,面对对象促进了封装,封装是指基于自己的数据进行操作。

单例模式:将责任集中到某个类的单个实例中。

观察者模式:将对象从依赖于它的对象中解耦。

中介者模式:将职责集中在某个类,该类能够监督其它对象的交互。

代理模式:让一个对象扮演其它对象的行为。

职责链模式:同意将请求传递给职责链的其它对象,直到这个请求被某个对象处理。

享元模式:将共享的、细粒度的对象职责集中管理。

构造型模式:构建者模式,工厂方法模式,抽象工厂模式,原型模式,备忘录模式

普通情况下,你须要为自己开发的类提供构造函数使其可以被初始换,这些构造函数可能相互调用协作,并且类中的每一个构造函数终于都会调用超类的构造函数,调用构造函数常规的做法是new操作符,可是也可以使用反射来初始化和适用对象。在设计一个新类时,仅仅有在类的用户知道该怎样初始化类以及传递所需的參数时,构造函数才是有效的。

构建者模式:在请求创建对象前,逐步收集创建对象须要的信息。

工厂方法模式:决定推迟实例化类对象。

抽象工厂模式:创建一族具有某些共同特征的对象。

原型模式:依据现有对象创建一个新的对象。

备忘录模式:通过包括了对象内部状态的静态版本号又一次构建一个对象。

操作型模式:模板方法模式,状态模式,策略模式,命令模式,解释器模式

理解操作型模式之前先要理解 算法 多态 方法 操作。操作是一个服务的规格说明,他能够被类的实例调用。

方法是操作的实现。操作表示类做了什么,还表示服务提供的接口。不同的类可能用不同的方法实现相同的操作。比如非常多类都是实现了自己的toString 操作。

算法是已经定义好的计算程序,将数据或者数据集作为输入,将产生的数据或者数据集作为输出,算法是一个过程,一个有输入和输出的指令序列,算法须要多个方法来运行。算法完毕一些事情,他可能是方法的一部分,也可能调用了非常多方法。在面向对象的设计中,须要多个方法參与的算法通常依赖于多态,由于多态机制同意一个操作具有不同的实现。多态是一个既依赖于调用的操作,又依赖于调用接收者类型的一种方法调用的原则。比方:运行表达式m.cmd(),假设m是Machine类的实例,调用Machine.cmd()。假设m是MachineComposite
调用MachineComposite.cmd()。多态是指合适的对象调用合适的方法。

模板方法模式:在方法中实现算法,推迟对算法步骤的定义使得子类可以又一次实现。

状态模式:将操作分散,使得每一个类都可以表示不同的状态。

策略模式:封装操作,使得实现是能够互相替换的。

命令模式:用对象来封装方法调用

解释器模式:将操作分散,使得每一个实现可以运用到不同类型的集合中。

扩展型模式:装饰器模式,迭代器模式,訪问者模式

编写代码的主要目的是扩展新的功能,这须要又一次组织代码,改善代码的质量。

装饰器模式:让开发人员动态组合对象的行为。

迭代器模式:提供一个方法来顺序訪问集合中的元素。

訪问者模式:同意开发人员定义一个新的操作,而无须改变分层体系中的类。

Java设计模式论述的更多相关文章

  1. Java九阳真经论述及愿景

    Java九阳真经论述及愿景 “他强由他强,清风拂山冈,他横由他横,明月照大江.” <倚天屠龙记>中张无忌被玄冥二老的玄冥神掌打伤后,体寒难耐,到处求解决之法.一次被韦蝠王打下山谷后,偶遇一 ...

  2. java设计模式- &lpar;1&rpar;单例模式

    参加校园招聘的笔试,发现公司都会考一些java设计模式,所以上网查询相关内容,总结常用的几种单例模式. 单例模式(Singleton Pattern)是 Java中最简单的设计模式之一.这种类型的设计 ...

  3. JAVA 设计模式 桥接模式

    用途 桥接模式 (Bridge) 将抽象部分与实现部分分离,使它们都可以独立的变化. 桥接模式是一种结构式模式. 结构

  4. java设计模式 策略模式Strategy

    本章讲述java设计模式中,策略模式相关的知识点. 1.策略模式定义 策略模式,又叫算法簇模式,就是定义了不同的算法族,并且之间可以互相替换,此模式让算法的变化独立于使用算法的客户.策略模式属于对象的 ...

  5. Java设计模式之行为型模式

    行为型模式共11种:策略模式.模板方法模式.观察者模式.迭代子模式.责任链模式.命令模式.备忘录模式.状态模式.访问者模式.中介者模式.解释器模式. 策略模式:策略模式的决定权在用户,系统本身提供不同 ...

  6. Java设计模式(三) 抽象工厂模式

    原创文章,同步发自作者个人博客,转载请注明出处 http://www.jasongj.com/design_pattern/abstract_factory/ 抽象工厂模式解决的问题 上文<工厂 ...

  7. Java设计模式(十二) 策略模式

    原创文章,同步发自作者个人博客,http://www.jasongj.com/design_pattern/strategy/ 策略模式介绍 策略模式定义 策略模式(Strategy Pattern) ...

  8. Java设计模式(二) 工厂方法模式

    本文介绍了工厂方法模式的概念,优缺点,实现方式,UML类图,并介绍了工厂方法(未)遵循的OOP原则 原创文章.同步自作者个人博客 http://www.jasongj.com/design_patte ...

  9. Java设计模式(一) 简单工厂模式不简单

    摘要:本文介绍了简单工厂模式的概念,优缺点,实现方式,以及结合Annotation和反射的改良方案(让简单工厂模式不简单).同时介绍了简单工厂模式(未)遵循的OOP原则.最后给出了简单工厂模式在JDB ...

随机推荐

  1. enable feature AJAX of MOSS2007

    As default, the feature AJAX of MOSS2007 is disabled, so the site web configuration file should be m ...

  2. VScode调试Python

    第一步,确保装上了PYTHON扩展 然后打开文件夹(这个东西必须打开文件夹才能进行调试,不能打开一个文件就调试) 打开文件夹后,那里显示没有配置,这时需要你按下F5 弹出选择环境,点击Python 它 ...

  3. js正则表达式replace里有变量的解决方法用到RegExp类

    一直比较害怕使用正则表达式,貌似很深奥很复杂的样子,所以在用js操作字符串的时候,我最多使用的是replace.split.substring.indexOf等函数,这些函数有时候需要多次叠加使用,但 ...

  4. 20145222黄亚奇《Java程序设计》实验四实验报告

    20145222<Java程序设计>第四次实验报告 实验四 Android环境搭建 实验内容 1.搭建Android环境 2.运行Android 3.修改代码,能输出学号 实验步骤 搭建A ...

  5. WIN8&plus;VS2013编写发布WCF之二(部署)

    上文简介了如何建立WCF工程并且调试,下面说一下如何部署. 本文将陆陆续续讲述三种部署方式,随着项目的进展将不断补全. 声明: 用管理员身份打开VS2013,发布前请将程序的.net版本改成与服务器相 ...

  6. PAT-乙级-1009&period; 说反话 &lpar;20&rpar;

    1009. 说反话 (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 给定一句英语,要求你编写程序,将句中 ...

  7. TCP 3次握手和四次挥手

    1.标示符说明    位码即tcp标志位: SYN(synchronous建立联机)   ACK(acknowledgement 确认)  PSH(push传送)    FIN(finish结束)   ...

  8. Android开发之UI的编程方式创建

    我们知道,android中一个activity对应一个xml的UI配置文件,除了用xml文件配置的方式创建用户界面外,还可以使用代码编程的方式来创建一个用户界面.如果用户界面需要在运行过程中动态生成的 ...

  9. Java 垃圾回收算法

    在之前Java 运行期数据区一文中,介绍了运行时内存的各个部分.其中程序计数器.虚拟机栈.本地方法栈都随线程消亡,所以,这几个区域的内存分配和回收都具备确定性.而 Java 堆和方法区不同,我们只有在 ...

  10. mysql异常:Packet for query is too large &lpar;10240 &gt&semi; 1024&rpar;&period; You can change this value

    出现这个问题的原因是:mysql的配置文件中 max_allowed_packet 设置过小,mysql根据配置文件会限制server接受的数据包大小. 还有人会说我操作的数据量明显没有超过这个值为啥 ...