![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
裴xiaoshuai
这个作者很懒,什么都没留下…
展开
-
java设计模式(十五)——迭代器模式
学院展示项目需求:编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系组成,一个学校有多个学院, 一个学院有多个系。如图:传统的设计方案(类图)问题分析:将学院看做是学校的子类,系是学院的子类,这样实际上是站在组织大小来进行分层次的 实际上我们的要求是 :在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系, 因此这种方...原创 2020-01-09 12:02:11 · 285 阅读 · 0 评论 -
java设计模式(十四)——访问者模式
完成测评系统需求将观众分为男人和女人,对歌手进行测评,当看完某个歌手表演后,得到他们对该歌手不同的评价(评价 有不同的种类,比如 成功、失败 等)传统方式的问题分析如果系统比较小,还是 ok 的,但是考虑系统增加越来越多新的功能时,对代码改动较大,违反了 ocp原则, 不利于维护 扩展性不好,比如 增加了 新的人员类型,或者管理方法,都不好做。访问者模式基本介绍...原创 2020-01-08 12:13:35 · 247 阅读 · 0 评论 -
java设计模式(十三)——命令模式
看一个具体的需求我们买了一套智能家电,有照明灯、风扇、冰箱、洗衣机,我们只要在手机上安装 app就可以控制对这些家电工作。 这些智能家电来自不同的厂家,我们不想针对每一种家电都安装一个 App,分别控制,我们希望只要一个 app就可以控制全部智能家电。 要实现一个 app 控制所有智能家电的需要,则每个智能家电厂家都要提供一个统一的接口给 app调用,这时 就可以考虑使用命令模式...原创 2020-01-07 16:05:51 · 196 阅读 · 0 评论 -
java设计模式(十二)——模版方法模式
豆浆制作问题:编写制作豆浆的程序,说明如下:制作豆浆的流程 选材--->添加配料--->浸泡--->放到豆浆机打碎 通过添加不同的配料,可以制作出不同口味的豆浆 选材、浸泡和放到豆浆机打碎这几个步骤对于制作每种口味的豆浆都是一样的 请使用 模板方法模式 完成 (说明:因为模板方法模式,比较简单,很容易就想到这个方案,因此就直接使用,不再使用传统的方案来引出模...原创 2020-01-06 14:56:44 · 144 阅读 · 0 评论 -
java设计模式(十一)——代理模式
代理模式(Proxy)基本介绍代理模式:为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。 被代理的对象可以是远程对象、创建开销大的对象或需要安全控制的对象 代理模式有不同的形式, 主要有三种 静态代理、动态代理 (JDK代理、接口代理)和 Cglib代理 (可以在内...原创 2020-01-02 16:31:40 · 113 阅读 · 0 评论 -
java设计模式(十)——享元模式
展示网站项目需求小型的外包项目,给客户 A 做一个产品展示网站,客户 A 的朋友感觉效果不错,也希望做这样的产品展示网站,但是要求都有些不同:有客户要求以新闻的形式发布 有客户人要求以博客的形式发布 有客户希望以微信公众号的形式发布传统方案解决网站展现项目直接复制粘贴一份,然后根据客户不同要求,进行定制修改 给每个网站租用一个空间 方案设计示意图:问题分析:...原创 2020-01-02 11:51:02 · 332 阅读 · 0 评论 -
java设计模式(九)——外观模式
影院管理项目:组建一个家庭影院:DVD 播放器、投影仪、自动屏幕、环绕立体声、爆米花机,要求完成使用家庭影院的功能,其过程为:直接用遥控器:统筹各设备开关开爆米花机;放下屏幕;开投影仪;开音响;开 DVD,选 dvd;去拿爆米花;调暗灯光;播放;观影结束后,关闭各种设备;传统方式解决:传统方式解决影院管理问题分析:在 Clien...原创 2019-12-30 17:14:20 · 182 阅读 · 0 评论 -
java设计模式(八)——组合模式
学校院系展示需求编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系组成,一个学校有多个学院, 一个学院有多个系。如图:传统方式思考解决(类图):分析:将学院看做是学校的子类,系是学院的子类,这样实际上是站在组织大小来进行分层次的 实际上我们的要求是 :在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系, 因此这种方案,不能很好...原创 2019-12-27 17:28:17 · 150 阅读 · 0 评论 -
java设计模式(七)——装饰者模式
星巴克咖啡订单项目问题描述:咖啡种类/单品咖啡:Espresso(意大利浓咖啡)、ShortBlack、LongBlack(美式咖啡)、Decaf(无因咖啡) 调料:Milk、Soy(豆浆)、Chocolate 要求在扩展新的咖啡种类时,具有良好的扩展性、改动方便、维护方便 使用 OO的来计算不同种类咖啡的费用: 客户可以点单品咖啡,也可以单品咖啡+调料组合。方案一:...原创 2019-12-27 11:37:01 · 487 阅读 · 0 评论 -
java设计模式(六)——桥接模式
手机操作问题现在对不同手机类型的不同品牌实现操作编程(比如:开机、关机、上网,打电话等),如图:1.传统模式思考解决使用传统模式解决对应的类图:2.问题分析扩展性问题(类爆炸),如果我们再增加手机的样式(旋转式),就需要增加各个品牌手机的类,同样如果我们增加一个手机品牌,也要在各个手机样式类下增加。 违反了单一职责原则,当我们增加手机样式时,要同时增加所有品牌...原创 2019-12-26 14:37:22 · 203 阅读 · 0 评论 -
java设计模式(五)——建造者设计模式
建造者模式基本介绍建造者模式(BuilderPattern)又叫生成器模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。 建造者模式 是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们, 用户不需要知道内部的具体构建细节。建造者模式的四个角色Product(产品...原创 2019-12-04 17:10:19 · 94 阅读 · 0 评论 -
java设计模式(四)——原型设计模式
克隆羊问题现在有一只羊 tom,姓名为: tom, 年龄为:1,颜色为:白色,请编写程序创建和 tom 羊 属性完全相同的 10只羊。传统方式解决克隆羊问题public class Client { public static void main(String[] args) { // TODO Auto-generated method stub //传统的方法 S...原创 2019-12-03 14:45:34 · 275 阅读 · 0 评论 -
java设计模式(三)——工厂设计模式
看一个具体的需求看一个披萨的项目:要便于披萨种类的扩展,要便于维护1)披萨的种类很多(比如GreekPizz、CheesePizz等)2)披萨的制作有prepare,bake,cut,box3)完成披萨店订购功能。使用传统方式去实现:1.创建抽象Pizza类//将pizza类做成抽象public abstract class Pizza ...原创 2019-11-28 18:00:54 · 164 阅读 · 0 评论 -
java设计模式(二)——单例设计模式
单例设计模式介绍所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。比如Hibernate的SessionFactory,它充当数据存储源的代理,并负责创建Session对象。SessionFactory并不是轻量级的,一般情况下,一个项目通常只需要一个SessionFactory...原创 2019-11-28 16:08:36 · 183 阅读 · 0 评论 -
java设计模式(一)——6大原则
一、java基础1、面向对象的特征有哪些方面? 【基础】答:面向对象的编程语言有封装、继承 、抽象、多态等4个主要的特征。1封装:封装是保证软件部件具有优良的模块性的基础,封装的目标就是要实现软件部件的“高内聚、低耦合”,防止程序相互依赖性而带来的变动影响。在面向对象的编程语言中,对象是封装的最基本单位,面向对象的封装比传统语言的封装更为清晰、更为有力。面向对象的封装就是把描述一个对...原创 2019-11-28 15:38:29 · 258 阅读 · 0 评论