1.设计模式是什么:设计模式为我们提供了一套可复用的面向对象技术,再配合重构方法,可以让我们避免简单重复的工作。它使用面向接口编程,而不是面向实现。可以说设计模式是java程序设计的灵魂。

2.为什么要学设计模式:设计模式的引入可以降低代码的耦合性,增强代码的灵活性。

3.怎么用java的设计模式:设计模式是一个大的类别,在java中,设计模式大的分为三类:创建模式,结构模式,行为模式。而没有个大类又可以分为很多小的类别。设计模式需要我们理解每种模式的应用场景,优劣势。并多看官方解释,多敲多练,就会慢慢有所领悟并学会使用。

4.设计模式简介

  4.1.创建模式:

    4.1.1.工厂方法和抽象工厂(Factory):使用工厂模式就和使用new一样频繁。

    4.1.2.原型(prototype):使用原型模式指定创建对象的种类,并且通过copy这些原型创建新的对象。

    4.1.3.builder模式:汽车由车轮 方向盘 发动机很多部件组成,同时,将这些部件组装成汽车也是一件复杂的工作,Builder 模式就是将这两种情况分开进行。

    4.1.4.singleton单例模式:保证一个类只有一个实例,并提供一个访问它的全局访问点。

  4.2.结构模式:

    4.2.1.设计模式之 Facade:可扩展的使用 JDBC 针对不同的数据库编程,Facade 提供了一种灵活的实现.

    4.2.2.设计模式之 Proxy:以 Jive 为例,剖析代理模式在用户级别授权机制上的应用。

    4.2.3.设计模式之 Adapter:使用类再生的两个方式:组合(new)和继承(extends),这个已经在"thinking in java"中提到过

    4.2.4.设计模式之 Composite:就是将类用树形结构组合成一个单位.你向别人介绍你是某单位,你是单位中的一个元素,别人和你做买卖,相当于和单位做买卖。

    4.2.5.设计模式之 Decorator:Decorator 是个油漆工,给你的东东的外表刷上美丽的颜色.

    4.2.6.设计模式之 Bridge:将"牛郎织女"分开(本应在一起,分开他们,形成两个接口),在他们之间搭建一个桥(动态的结合)

    4.2.7.设计模式之 Flyweight:提供 Java 运行性能,降低小而大量重复的类的开销.

  4.3.行为模式:

    4.3.1.设计模式之 Template:实际上向你介绍了为什么要使用 Java 抽象类,该模式原理简单,使用很普遍.

    4.3.2.设计模式之 Memento:很简单一个模式,就是在内存中保留原来数据的拷贝.

    4.3.3.设计模式之 Observer:介绍如何使用 Java API 提供的现成 Observer。

    4.3.4.设计模式之 Chain of Responsibility:各司其职的类串成一串,好象击鼓传花,当然如果自己能完成,就不要推委给下一个.

    4.3.5.设计模式之 Command:什么是将行为封装,Command 是最好的说明.

    4.3.6.设计模式之 State:状态是编程中经常碰到的实例,将状态对象化,设立状态变换器,便可在状态中轻松切换.

    4.3.7.设计模式之 Strategy:不同算法各自封装,用户端可随意挑选需要的算法.

    4.3.8.设计模式之 Mediator:Mediator 很象十字路口的红绿灯,每个车辆只需和红绿灯交互就可以.

    4.3.9.设计模式之 Interpreter:主要用来对语言的分析,应用机会不多.

    4.3.10.设计模式之 Visitor:访问者在进行访问时,完成一系列实质性操作,而且还可以扩展.

    4.3.11.设计模式之 Iterator:这个模式已经被整合入 Java 的 Collection.在大多数场合下无需自己制造一个Iterator,只要将对象装入Collection中,直接使用Iterator

进行对象遍历。

5.GoF 的《设计模式》是所有面向对象语言(C++ Java C#)的基础,只不过不同的语言将之实现得更方便地使用。GoF 的设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧,让你能够真正掌握接口或抽象类的应用,从而在原来的 Java 语言基础上跃进一步,更重要的是,GoF 的设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。

学习java设计模式的必要性探讨的更多相关文章

  1. 学习java设计模式有用吗?懂这六个原则,编程更轻松

    学习java设计模式有用吗?懂这六个原则,编程更轻松 1.开闭原则(Open Close Principle) 开闭原则就是说对扩展开放,对修改关闭.在程序需要进行拓展的时候,不能去修改原有的代码,实 ...

  2. 学习Java设计模式的10条建议

    设计模式在整个Java的学习路线图中扮演着承上启下的作用. 在整个软件生命周期中,唯一不变的就是变化.设计模式就是要在软件设计.编码中对现有问题的一种总结,并从中寻求应对变化的策略. 自己初次接触设计 ...

  3. 小白学习java设计模式之策略模式

    策略模式:1.分析项目中的变化部分与不变部分(每个设计模式都要分析的)2.多用组合少用继承;用行为类组合,而不是行为继承,更具有弹性直接上代码: package com.wz.oneStrategis ...

  4. java设计模式系列之设计模式概要(1)

    一.什么是设计模式 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. ...

  5. Java设计模式之十 ---- 访问者模式和中介者模式

    前言 2018年已经过去,新的一年工作已经开始,继续总结和学习Java设计模式. 在上一篇中我们学习了行为型模式的解释器模式(Interpreter Pattern)和迭代器模式(Iterator P ...

  6. Unity设计模式+Java设计模式,讲解+案例+PPT,一次性学会设计模式,拥抱高薪!

    一个程序员对设计模式的理解:“不懂”为什么要把很简单的东西搞得那么复杂.后来随着软件开发经验的增加才开始明白我所看到的“复杂”恰恰就是设计模式的精髓所在,我所理解的“简单”就是一把钥匙开一把锁的模式, ...

  7. Java设计模式(二)设计模式原则

    学习Java设计模式之前,有必要先了解设计模式原则. 开闭原则 定义 一个软件实体如类.模块和函数应该对扩展开放,对修改关闭 用抽象构建框架,用实现扩展细节 优点:提高软件系统的可复用性及可维护性 C ...

  8. Java设计模式学习资源汇总

    本文记录了Java设计模式学习书籍.教程资源.此分享会持续更新: 1. 设计模式书籍 在豆瓣上搜索了一把,发现设计模式贯穿了人类生活的方方面面.还是回到Java与程序设计来吧. 打算先归类,再浏览,从 ...

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

    开始学习Java的设计模式,因为做了很多年C语言,所以语言基础的学习很快,但是面向过程向面向对象的编程思想的转变还是需要耗费很多的代码量的.所有希望通过设计模式的学习,能更深入的学习. 把学习过程中的 ...

随机推荐

  1. 在c中break的使用

    break语句通常用在循环语句和开关语句中.当break用于开关语句switch中时,可使程序跳出switch而执行switch以后的语句:如果没有break语句,则会从满足条件的地方(即与switc ...

  2. weixin报警脚本

    #!/bin/bash ### script name weixin.sh ### send messages from weixin for zabbix monitor ### jack ### ...

  3. wpf图片定点缩放

    去年犯小人,万事不顺,4月刚换工作,开始新工作 遇到一个小问题,需要读取图片,然后对图片进行定点缩放,很简答的逻辑,很简单的代码,但是,这尼玛我被wpf给坑了,这一坑就是三天 好了,很简单的一个UI ...

  4. html5--5-8 绘制圆/弧

    html5--5-8 绘制圆/弧 学习要点 掌握绘制圆弧的方法 矩形的绘制方法 rect(x,y,w,h)创建一个矩形 strokeRect(x,y,w,hx,y,w,h) 绘制矩形(无填充) fil ...

  5. python 基础之第十二天(re正则,socket模块)

    In [14]: 'hello-wold.tar.gz'.split('.') Out[14]: ['hello-wold', 'tar', 'gz'] In [15]: import re In [ ...

  6. 洛谷P3385判负环——spfa

    题目:https://www.luogu.org/problemnew/show/P3385 两种方法,dfs和bfs: 一开始写的dfs,要把dis数组初值赋成0,这样从一个连着负边的点开始搜: 在 ...

  7. 让应用程序支持emoji字符

    自iPhone从iOS 5在输入法中开始支持emoji以来,这些表情符号迅速风靡世界.但是很多Web网站竟然还不!支!持!!! 那怎么才能支持emoji呢?其实代码一行都不用改,因为emoji符号实际 ...

  8. debugs

    import os def get_nova_credentials_v2(): d = {} d['version'] = '2.0' d['username'] = os.environ['OS_ ...

  9. ubuntu--vim 技巧

    本文介绍了vi (vim)的基本使用方法,但对于普通用户来说基本上够了! vi编辑器是所有Unix及Linux系统下标准的编 辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法 ...

  10. CodeForces 1110H. Modest Substrings

    题目简述:给定$1 \leq l \leq r \leq 10^{800}$,求一个长度为$n \leq 2000$的数字串$s$,其含有最多的[好]子串.一个串$s$是[好]的,如果将其看做数字时无 ...