一、设计模式在JDK中的应用(结合JDK源码,分析JDK对设计模式的支持与应用)。课设内容包括:java
用UML类图分析JDK所支持或应用的设计模式的结构,并与GOF的结构加以对比;举例并演示相关类的应用;至少5种设计模式。编程
二、课程设计报告的内容及要求设计模式
报告必须手写在学校指定的课程设计专用本上,类型一的报告内容以下:安全
第一章 设计模式概述app
第二章 JDK分析阿里云
第三章 相关设计模式简介(背景、UML结构、角色、职责)spa
第四章 设计模式在JDK中的应用(背景、UML结构、角色、职责)设计
第五章 应用实例代理
第六章 课设总结对象
参考文献
附录:应用实例代码(打印)
1、特色:
一、单例类只能有一个实例。
二、单例类必须本身建立本身的惟一实例。
三、单例类必须给全部其余对象提供这一实例。
单例模式确保某个类只有一个实例,并且自行实例化并向整个系统提供这个实例。
二.分类
(一)、懒汉式单例
//懒汉式单例类.在第一次调用的时候实例化本身
Singleton经过将构造方法限定为private避免了类在外部被实例化,在同一个虚拟机范围内,Singleton的惟一实例只能经过getInstance()方法访问。
(事实上,经过Java反射机制是可以实例化构造方法为private的类的,那基本上会使全部的Java单例实现失效。此问题在此处不作讨论,姑且掩耳盗铃地认为反射机制不存在。) 点击阅读此篇
1、 概念
建造模式是对象的建立模式。建造模式能够将一个产品的内部表象(internal representation)与产品的生产过程分割开来,从而可使一个建造过程生成具备不一样的内部表象的产品对象。
一、产品的内部表象
一个产品常有不一样的组成成分做为产品的零件,这些零件有多是对象,也有可能不是对象,它们一般又叫作产品的内部表象(internal representation)。不一样的产品能够有不一样的内部表象,也就是不一样的零件。使用建造模式可使客户端不须要知道所生成的产品有哪些零件,每一个 产品的对应零件彼此有何不一样,是怎么建造出来的,以及怎么组成产品。
二、对象性质的建造
有些状况下,一个对象的一些性质必须按照某个顺序赋值才有意义。在某个性质没有赋值以前,另外一个性质则没法赋值。这些状况使得性质自己的建造涉 及到复杂的商业逻辑。这时候,此对象至关于一个有待建造的产品,而对象的这些性质至关于产品的零件,建造产品的过程是建造零件的过程。因为建造零件的过程 很复杂,所以,这些零件的建造过程每每被“外部化”到另外一个称作建造者的对象里,建造者对象返还给客户端的是一个所有零件都建造完毕的产品对象。点击阅读此篇
工厂模式
在面向对象编程中, 最一般的方法是一个new操做符产生一个对象实例,new操做符就是用来构造对象实例的。可是在一些状况下, new操做符直接生成对象会带来一些问题。举例来讲, 许多类型对象的创造须要一系列的步骤: 你可能须要计算或取得对象的初始设置; 选择生成哪一个子对象实例; 或在生成你须要的对象以前必须先生成一些辅助功能的对象。在这些状况,新对象的创建就是一个“过程”,不只是一个操做,像一部大机器中的一个齿轮传动。
模式的问题:你如何能轻松方便地构造对象实例,而没必要关心构造对象实例的细节和复杂过程呢?
解决方案:创建一个工厂来建立对象
1、引言
1)尚未工厂时代:假如尚未工业革命,若是一个客户要一款宝马车,通常的作法是客户去建立一款宝马车,而后拿来用。
2)简单工厂模式:后来出现工业革命。用户不用去建立宝马车。由于客户有一个工厂来帮他建立宝马.想要什么车,这个工厂就能够建。好比想要宝马系列车。工厂就建立这个系列的车。即工厂能够建立产品。
3)工厂方法模式时代:为了知足客户,车系列愈来愈多,奔驰等系列,一个工厂没法建立全部的车系列。因而由单独分出来多个 具体的工厂。每一个具体工厂建立一种系列。即具体工厂类只能建立一个具体产品。
4)抽象工厂模式时代:随着客户的要求愈来愈高,车进行分类,分为商务车和运动车两个族点击阅读此篇
1、概述
定义:原型模式属于对象的建立模式。经过给出一个原型对象来指明全部建立的对象的类型,而后用复制这个原型对象的办法建立出更多同类型的对象。简言之:就是复制粘贴。这就是选型模式的用意。
2、结构
原型模式主要用于对象的复制,它的核心是就是类图中的原型类Prototype。Prototype类须要具有如下两个条件:
一、实现Cloneable接口。在java语言有一个Cloneable接口,它的做用只有一个,就是在运行时通知虚拟机能够安全地在实现了此接 口的类上使用clone方法。在java虚拟机中,只有实现了这个接口的类才能够被拷贝,不然在运行时会抛出 CloneNotSupportedException异常。
二、重写Object类中的clone方法。Java中,全部类的父类都是 Object类,Object类中有一个clone方法,做用是返回对象的一个拷贝,可是其做用域protected类型的,通常的类没法调用,因 此,Prototype类须要将clone方法的做用域修改成public类型。点击阅读此篇
一、概述
适配器模式把一个类的接口变换成客户端所期待的另外一种接口,从而使本来因接口不匹配而没法在一块儿工做的两个类可以在一块儿工做。
二、适配器模式的用途
即Adapter模式使得本来因为接口不兼容而不能一块儿工做的那些类能够在一块儿工做。
下面是两个典型例子
1、概述
1.装饰模式(Decorator)的定义:又名包装(Wrapper)模式,装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。
2.装饰模式以对客户端透明的方式动态的给一个对象附加上更多的责任。换言之客户端并不会觉的对象在装饰前和装饰后有什么区别。
3.装饰模式能够在不创造更多的子类的模式下,将对象的功能加以扩展。
2、装饰模式的结构
装饰模式的类图以下:
代理模式
一、生活中:
代理就是一我的或者一个组织表明其余人去作一件事的现实生活中的。在一些状况下,一个客户不想或者不可以直接引用一个对象,而代理对象能够在客户端和目标对象之间起到中介的做用。
二、官方:
代理模式是对象的结构模式。代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用
1、静态代理
类图结构以下
1、定义
Facade(外观)模式为子系统中的各种(或结构与方法)提供一个简明一致的界面,隐藏子系统的复杂性,使子系统更加容易使用。
2、结构
门面(Facade)角色 :客户端能够调用这个角色的方法。此角色知晓相关的(一个或者多个)子系统的功能和责任。在正常状况下,本角色会将全部从客户端发来的请求委派到相应的子系统去。
子系统(SubSystem)角色 :能够同时有一个或者多个子系统。每一个子系统都不是一个单独的类,而是一个类的集合(如上面的子系统就是由SystemA、SystemB、 SystemC三个类组合而成)。每一个子系统均可以被客户端直接调用,或者被门面角色调用。子系统并不知道门面的存在,对于子系统而言,门面仅仅是另一 个客户端而已。点击阅读此篇
1、定义
将抽象部分与实现(行为)部分分离,使它们均可以独立的变化。
桥接模式的作法是把变化部分(实现)抽象出来,使变化部分与主类(抽象)分离开来,从而将多个维度的变化完全分离。最后,提供一个管理类(以下面的引擎类)来组合不一样维度上的变化,经过这种组合来知足业务的须要。
2、结构
图-桥接模式结构图