自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 资源 (5)
  • 收藏
  • 关注

原创 职责链模式

一. 学校OA系统的采购审批项目:需求是采购员采购教学器材如果金额 小于等于5000 ,由教学主任审批 (0 <= x <= 5000)如果金额 小于等于10000,由院长审批 (5000 <= x <= 10000)如果金额 小于等于30000,由副校长审批 (10000 <= x <= 30000)如果金额 超过30000,由校长审批 (30000 < x)请设计程序完成采购审批项目二. 传统方案解决OA系统审批,传统的设计方案(类图)三.

2020-08-06 12:13:18 146

原创 策略模式

一. 编写鸭子项目,具体要求如下:有各种鸭子(比如 野鸭、北京鸭、水鸭等,鸭子有各种行为,比如 叫、飞行等)显示鸭子的信息二. 传统方案解决鸭子问题的分析和代码实现传统的设计方案(类图)代码实现package com.atguigu.strategy;public abstract class Duck { public Duck() { } public abstract void display();//显示鸭子信息

2020-08-06 12:12:55 105

原创 状态模式

一. APP抽奖活动问题请编写程序完成APP抽奖活动,具体要求如下假如每参加一次这个活动要扣除用户50积分,中奖概率是10%奖品数量固定,抽完就不能抽奖活动有四个状态:可以抽奖、不能抽奖、发放奖品和奖品领完活动的四个状态转换关系(如图)二. 状态模式基本介绍状态模式(State Pattern):它主要用来解决对象在多种状态转换时,需要对外输出不同的行为的问题。状态和行为是一一对应的,状态之间可以相互转换当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类三.

2020-08-06 12:12:27 124

原创 解释器模式

一. 四则运算问题通过解释器模式来实现四则运算,如计算 a+b-c 的值,具体要求先输入表达式的形式,比如 a+b+c-d+e ,要求表达式的字母不能重复再分别输入 a b c d e 的值最后求出结果:请输入表达式: a+b+c-d+e输入 a 的值: 10输入 b 的值: 11输入 c 的值: 1输入 d 的值: 2输入 e 的值: 3运算结果:a+b+c-d+e = 23二. 传统方案解决四则

2020-08-06 12:12:01 202

原创 备忘录模式

一. 游戏角色状态恢复问题游戏角色有攻击力和防御力,在大战Boss前保存自身的状态(攻击力和防御力),当大战Boss后攻击力和防御力下降,从备忘录对象恢复到大战前的状态二. 传统方案解决游戏角色恢复三. 传统的方式的问题分析一个对象,就对应一个保存对象状态的对象,这样当我们游戏的对象很多时,不利于管理,开销也很大传统的方式是简单的做备份,new 出另外一个对象出来,再把需要备份的数据放到这个新对象,但这就暴露了对象内部细节解决方案: => 备忘录模式四. 备忘录模式基本介绍备忘

2020-08-06 12:10:53 92

原创 中介者模式

一. 智能家庭项目智能家庭包括各种设备,闹钟、咖啡机、电视机、窗帘 等主人要看电视时,各个设备可以协同工作,自动完成看电视的准备工作,比如流程为:闹铃响起-> 咖啡机开始做咖啡-> 窗帘自动落下-> 电视机开始播放二. 传统方案解决智能家庭管理问题三. 传统的方式的问题分析当各电器对象有多种状态改变时,相互之间的调用关系会比较复杂各个电器对象彼此联系,你中有我,我中有你,不利于松耦合各个电器对象之间所传递的消息(参数),容易混乱当系统增加一个新的电器对象时,或者执行

2020-08-06 12:10:18 87

原创 观察者模式

一. 天气预报项目需求,具体要求如下:气象站可以将每天测量到的温度、湿度、气压等等以公告的形式发布出去(比如发布到自己的网站或第三方)需要设计开放型API,便于其他第三方也能接入气象站获取数据提供温度、气压和湿度的接口测量数据更新时,要能实时的通知给第三方二. 天气预报设计方案1-普通方案WeatherData 类传统的设计方案通过对气象站项目的分析,我们可以初步设计出一个 WeatherData 类说明:a. 通过getXxx方法,可以让第三方接入,并得到相关信息b. 当数

2020-08-06 12:09:31 110

原创 迭代器模式

一. 看一个具体的需求编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出显效的院系组成,一个学校有多个学院,一个学院有多个系。-------清华大学----------------计算机学院---------计算机科学与技术软件工程网络工程-------信息工程学院---------通信工程信息工程二. 传统方案解决学校院系展示(类图)三. 传统方案解决学校院系展示存在的问题分析将学院看作是学校的子类,系是学院的子类,这样实际上是站在组织大小来进行分层次的实际上我

2020-08-06 12:08:52 81

原创 访问者模式

一. 测评系统的需求将观众分为男人和女人,对歌手进行测评,当看完某个歌手表演后,得到他们对该歌手不同的评价(评价 有不同的种类,比如 成功、失败 等)传统方案二. 传统方式的问题分析如果系统比较小,还是ok的,但是考虑系统增加越来越多的新的功能时,对代码改动较大,违反了ocp原则,不利于维护扩展性不好,比如 增加了 新的人员类型,或者管理方法,都不好做引出我们会使用新的设计模式 => 访问者模式三. 访问者模式基本介绍访问者模式(Visitor Pattern),封装了一些

2020-08-05 08:02:51 172

原创 命令模式

一. 智能生活项目需求看一个具体的需求:我们买了一套只能家电,有照明灯、风扇、冰箱、洗衣机、我们只要在手机上安装app 就可以控制对这些家电工作。这些只能家电来自不同的厂家,我们不想针对每一种家电都安装一个app ,分别控制,我们希望只要一个app 就可以控制全部智能家电要实现一个app控制所有智能家电的需要,则每个只能家电厂家都要提供一个统一的接口给app调用,这时 就可以考虑使用命令模式命令模式可将“动作的请求者”从“动作的执行者”对象中解耦出来在我们的例子中,动作的请求者是手机app,动

2020-08-05 07:57:34 133

原创 模板方法模式

一. 豆浆制作问题编写制作豆浆的程序,说明如下:制作豆浆的流程 选材-> 添加配料-> 浸泡-> 放到豆浆机打碎通过添加不同的配料,可以制作出不同口味的豆浆选材、浸泡和当道豆浆机打碎这几个步骤对于制作每种口味的豆浆都是一样的请使用 模板方法模式 完成 (说明:因为模板方法模式比较简单,很容易就想到这个方案,因此就直接使用,不再使用传统的方案来引出模板方法模式)二. 模板方法模式基本介绍模板方法模式(Template Method Pattern),又叫模板模式(T

2020-08-05 07:52:09 96

原创 代理模式

一. 代理模式(Proxy)代理模式的基本介绍代理模式:为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象,这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。被代理的对象可以是远程对象、创建开销大的对象或需要安全控制的对象代理模式有不同的形式,主要有三种 静态代理、动态代理(JDK 代理、接口代理) 和 Cglib 代理(可以在内存动态的创建对象,而不需要实现接口,它是属于动态代理的范畴)代理模式示意图静态代理一. 静态代理模式

2020-08-05 07:45:20 123

原创 享元模式

一. 展示网站项目需求小型的外包项目,给客户A做一个产品展示网站,客户A 的朋友感觉效果不错,也希望做这样的产品展示网站,但是要求都有些不同有客户要求以新闻的形式发布有客户要求以博客的形式发布有客户希望以微信公众号的形式发布二. 传统方案解决网站展现项目直接复制粘贴一份,然后根据客户不同要求,进行定制修改给每个网站租用一个空间方案设计示意图三. 传统方案解决网站展示项目-问题分析需要的网站结构相似度很高,而且都不是高访问量网站,如果分成多个虚拟空间来处理,相当于一个相同网站的

2020-08-05 07:36:31 96

原创 外观模式

一. 影院管理项目组建一个家庭影院:DVD播放器、投影仪、自动屏幕、环绕立体声、爆米花机,要求完成使用家庭影院的功能,其过程为:直接用遥控器:统筹各设备开关开爆米花机放下屏幕开投影仪开音响开DVD ,选 dvd去哪爆米花调暗灯光播放光影结束后,关闭各种设备二. 传统方式解决影院管理三. 传统方式解决影院管理问题分析在 ClientTest 的 main 方法中,创建各个子系统的对象,并直接去调用子系统(对象)相关方法,会造成调用过程混乱,没有清晰的过程不利于在Client

2020-08-05 07:30:51 82

原创 组合模式

一. 看一个学校院系展示需求编写一个展示一个学校院系结构:需求是这样,要在一个页面中展示出显效的院系组成,一个学校有多个学院,一个学院有多个系。-------清华大学----------------计算机学院---------计算机科学与技术软件工程网络工程-------信息工程学院---------通信工程信息工程二. 传统方案解决学校院系展示(类图)三. 传统方案解决学校院系展示存在的问题分析将学院看作是学校的子类,系是学院的子类,这样实际上是站在组织大小来进行分层次的实际

2020-08-05 07:25:17 106

原创 装饰者设计模式

一. 星巴克咖啡订单项目(咖啡馆):咖啡种类 / 单品咖啡:Espresso(意大利浓咖啡)、ShortBlack、LongBlack(美式咖啡)、Decaf(无因咖啡)调料:Milk、 Soy(豆浆)、Chocolate要求在扩展新的咖啡种类时,具有良好的扩展性、改动方便、维护方便使用OO 的来计算不同种类咖啡的费用:客户可以点单品咖啡,也可以单品咖啡+调料组合二. 方案1-解决星巴克咖啡订单项目三. 方案1-解决星巴克咖啡订单问题分析Drink 是一个抽象类,表示饮料des 就是

2020-08-05 07:18:13 157

原创 桥接模式

一. 手机操作问题现在对不同手机类型的不同品牌实现操作编程(比如:开机、关机、上网、打电话等),如图:二. 传统方案解决手机操作问题传统方法对应的类图三. 传统方案解决手机操作问题分析扩展性问题(类爆炸),如果我们再增加手机的样式(旋转式),就需要增加各个品牌手机的类,同样如果我们增加一个手机品牌,也要再各个手机样式类下增加。违反了单一职责原则,当我们增加手机样式时,要同时增加所有品牌的手机,这样增加了代码维护成本。解决方案 -> 使用桥接模式四. 桥接模式(Bridge)-基

2020-08-05 07:11:00 116

原创 适配器设计模式

一. 现实生活中的适配器例子不同标准的插座可以用多功能转换插头(适配器)来转换二. 基本介绍适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表示,主要目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper)适配器模式属于结构性模式主要分为三类:类适配器模式、对象适配器模式、接口适配器模式三. 工作原理适配器模式:将一个类的接口转换成另一种接口,让元贝接口不兼容的类可以兼容从用户的角度看不到被适配者,是解耦的

2020-08-05 07:03:42 105

原创 建造者模式

一. 盖房项目需求需要建房子:这一过程为 打桩、砌墙、封顶房子有各种各样的,比如 普通房,高楼,别墅,各种房子的建造过程虽然一样,但是要求是不一样的。二. 传统方式解决盖房需求思路分析(图解)代码实现AbstractHouse.javapackage com.percy.builder;public abstract class AbstractHouse { public abstract void buildBasic();//打地基 public ab

2020-08-04 15:57:28 131

原创 原型模式

一. 克隆羊问题现在有一直羊tom ,姓名为:tom,年龄为:1,颜色为:白色,请编写程序创建和tom 羊 属性完全相同的10只羊。二. 传统方式解决克隆羊问题思路分析(图解)代码:Sheep.javapackage com.percy.prototype; public class Sheep { private String name; private int age; private String color; public Shee

2020-08-04 15:35:55 112

原创 工厂模式

一. 看一个具体的需看一个披萨的项目:要便于披萨种类的扩展,要便于维护 1) 披萨的种类很多(比如 GreekPizza、CheesePizza 等) 2) 披萨的制作过程有 prepare, bake, cut, box 3) 完成披萨店订购功能二. 使用传统方法来完成 1) 思路分析(类图) 2) 编写OrderPizza.java 去订购需要的各种Pizzapackage com.percy.factory; import java.io.BufferedReader; imp

2020-08-04 14:54:33 93

原创 单例设计模式

单例设计模式采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只能提供一个取得其对象实例的方法(静态方法)。比如Hibernate的SessionFactory,它充当数据存储源的代理,并负责创建Session对象。SessionFactory并不是轻量级的,一般情况下,一个项目只需要一个SessionFactory就够,这时就会使用到单例模式。一. 单例设计模式的八种方式:饿汉式(静态常量)、饿汉式(静态代码块)、懒汉式(线程不安全)、懒汉式(线程安全,同步方法)、懒汉式

2020-08-04 14:40:50 71

原创 设计模式的七大原则

2020-08-04 14:14:11 58

原创 Mysql5.6安装(centos7)

CentOS7 64位1、下载安装包“mysql-5.6.33-linux-glibc2.5-x86_64.tar.gz”#安装依赖: yum -y install perl perl-devel autoconf libaio2、把下载的安装包移动到/usr/local/下。3、解压:tar zxvf mysql-5.6.33-linux-glibc2.5-x86_64.tar....

2020-08-04 14:12:58 195

Struts2技术内幕 权威指南

Struts2技术内幕.pdf Struts2权威指南.pdf Struts2.3.1.2_API.chm

2019-04-05

CISCO局域网交换基础(第一版)

CISCO局域网交换基础(第一版)

2015-09-14

北京圣思园javaweb课件和笔记

北京圣思园javaweb课件和笔记

2012-02-24

Javase的api文档

Javase的api文档

2012-02-09

foobar2000 插件(播放ape文件)

foobar2000 插件(播放ape文件)

2011-12-01

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除