1.UML类图及Java实现

案例:某基于C/S的即时聊天系统登录模块功能描述如下:用户通过登录界面(LoginForm)输入账号和密码,系统将输入的账号和密码与存储在数据库(User)表中的用户信息进行比较,验证用户输入是否正确,如果输入正确则进入主界面(MainForm),否则提示“输入错误”。

根据以上描述绘制即时聊天系统登录模块的类图,并用Java编程实现(模拟实现即可)。

实现类图:

代码实现结构:

实现代码:

public interface UserDao {public void findUser(String username,String password);
}
public class LoginForm {LoginBo login;public void LoginForm(UserDao userDao,User user) {login=new LoginBo();login.setUserDao(userDao);login.validate(user.getUsername(), user.getPassword());userDao.findUser(user.getUsername(), user.getPassword());}
}
public class MysqlUserDao implements UserDao{@Overridepublic void findUser(String username, String password) {// TODO Auto-generated method stubHashMap<User,String> map = new HashMap<>();map.put(new User("RAOJiSheng","0031"),"001");map.put(new User("Sony","5000"),"002");map.put(new User("Huawei","6000"),"003");Set<User> Users = map.keySet();Iterator<User> iterator = Users.iterator();while (iterator.hasNext()){User next = iterator.next();if(next.getUsername().equals(username) && next.getPassword().equals(password)) {System.out.println("登入成功!!!");return;}}System.out.println("登入失败!!");}}

运行结果:

2.面向对象设计原则的应用

案例:在某绘图软件中提供了多种大小不同的画笔(Pen),并且可以给画笔指定不同颜色,某设计人员针对画笔的结构设计了如下类图:

通过仔细分析,设计人员发现该类图存在非常严重的问题,如果需要增加一种新的大小的笔或者增加一种新的颜色,都需要增加很多子类,如增加一种绿色,则对应每一种大小的笔都需要增加一支绿色笔,系统中类的个数急剧增加。

试根据依赖倒转原则和合成复用原则对该设计方案进行重构,使得增加新的大小的笔和增加新的颜色都较为方便。

实现类图:

代码实现结构:

实现代码:

//抽象工厂
public interface PanAbstractFactory {public Color newColor();public Size newSize();
}
//具体工厂
public class Pan1 implements PanAbstractFactory{@Overridepublic Color newColor() {// TODO Auto-generated method stubSystem.out.println("正在设置颜色....");return new Red();}@Overridepublic Size newSize() {// TODO Auto-generated method stubSystem.out.println("开始制作型号....");return new Small();}}
//抽象颜色
public interface Color {public void show();
}
//具体颜色
public class Red implements Color{@Overridepublic void show() {// TODO Auto-generated method stubSystem.out.println("涂上红色..");}}
//抽象大小
public interface Size {public void show();
}
//具体大小
public class Middle implements Size{public void show() {// TODO Auto-generated method stubSystem.out.println("制作大型号的..");}}

实现效果:

3、简单工厂模式的应用

案例1:使用简单工厂模式模拟女娲(Nvwa)造人(Person),如果传入参数M,则返回一个Man对象,如果传入参数W,则返回一  个Woman对象,用Java语言实现该场景。

扩展:现需要增加一个新的Robot类,如果传入参数R,则返回一个Robot对象,对代码进行修改并注意女娲的变化。

案例2:使用简单工厂模式设计一个可以创建不同几何形状(如圆形、方形和三角形等)的绘图工具,每个几何图形都要有绘制draw()和擦除erase()两个方法,要求在绘制不支持的几何图形时,提示一个UnSupportedException。

绘制类图并使用Java语言编程模拟实现。

案例1类图实现:

排版编辑有限,以下给出部分这几模式的案例分析UML类图以及实现代码的资源获取方式,希望对大家有帮助!!

获取资源链接:https://download.csdn.net/download/qingxiao__123456789/12511351

4.工厂模式的应用

案例:现需要设计一个程序来读取多种不同类型的图片格式,针对每一种图片格式都设计一个图片读取器(ImageReader),如GIF图片读取器(GifReader)用于读取GIF格式的图片、JPG图片读取器(JpgReader)用于读取JPG格式的图片。图片读取器对象通过图片读取器工厂ImageReaderFactory来创建,ImageReaderFactory是一个抽象类,用于定义创建图片读取器的工厂方法,其子类GifReaderFactory和JpgReaderFactory用于创建具体的图片读取器对象。使用工厂方法模式实现该程序的设计。

5.抽象工厂模式的应用

案例:计算机包含内存RAM、CPU等硬件设备,根据下面的“产品等级结构-产品族”示意图,使用抽象工厂模式实现计算机设备创建过程并绘制相应的类图。

分析:本例用抽象工厂模式来设计计算机的两个硬件,一个是Pc由PcCPU和PcRAM组成,一个是Mac由MacCPU和MacRAM组成,可以在以上两个农场中定义一个生产CPU的方法 newCPU() 和一个生产RAM的方法 newRAM()。

6.原型模式的应用

案例:设计一个客户类Customer,其中客户地址存储在地址类Address中,用浅克隆和深克隆分别实现Customer对象的复制并比较这两种克隆方式的异同。绘制类图并编程实现。

7.单例模式的应用

案例1:世界上只有一个月亮,月亮的直径是3476.28km,无论在中国还是在美国,我们所看到的都是同一个月亮。使用单例模式实现无论我们在哪所看到的月亮是同一个月亮(饿汉单例模式、懒汉单例模式),绘制类图并编程实现。

案例2:使用单例模式的思想模拟实现数据库连接池功能,确保系统中连接类的对象只能存在有限个,如两个或三个,设计并编写代码实现一个多例类。

8、组合模式的应用

案例:某教育机构组织结构如下图所示

在该教育机构的OA系统中可以给各级办公室下发公文,现采用组合模式设计该机构的组织结构,绘制相应的类图并编程模拟实现,在客户端代码中模拟下发公文。

10、装饰器模式的应用

星巴兹(Starbuzz)是以扩张速度最快而闻名的咖啡连锁店,因为扩张速度实在太快了,他们准备更新订单系统,以合乎他们的饮料供应要求。

购买咖啡时(综合HouseBlend、深焙DarkRoast、浓缩Espresso、低咖啡因Decaf),也可以要求在其中加入各种调料,例如:蒸奶(Milk)、豆浆(Soy)、摩卡(Mocha,也就是巧克力风味)或奶泡(Whip)。星巴兹会根据所加入的调料收取不同的费用,所以订单系统必须考虑到这些调料部分。

请使用装饰器模式完成订单计费,绘制类图并编程实现。

11、迭代器模式的应用

某教务管理系统中一个班级(Class)包含多个学生(Student),使用Java内置迭代器实现对学生信息的遍历,要求按学生年龄由大到小的次序输出学生信息。绘制类图并编程实现。

12、观察者模式的应用

某在线游戏支持多人联机对战,每个玩家都可以加入某一战队组成联盟,当战队中某一成员受到敌人攻击时将给所有盟友发送通知,盟友收到通知后将作出响应。使用观察者模式设计并实现该过程。绘制类图并编程实现。

13、策略模式的应用

某系统需要对重要数据(如用户密码)进行加密,并提供了几种加密方案(如凯撒加密、DES加密等),对该加密模块进行设计,使得用户可以动态选择加密方式。要求绘制类图并编程模拟实现

设计模式案例分析与实现相关推荐

  1. python设计模式案例分析_Python设计模式之职责链模式原理与用法实例分析

    本文实例讲述了Python设计模式之职责链模式原理与用法.分享给大家供大家参考,具体如下: 职责链模式(Chain Of Responsibility):使多个对象都有机会处理请求,从而避免发送者和接 ...

  2. 系分 - 案例分析 - 系统维护与设计模式

    个人总结,仅供参考,欢迎加好友一起讨论 文章目录 系分 - 案例分析 - 系统维护与设计模式 典型例题 1 题目描述 参考答案 典型例题 2 题目描述 参考答案 系分 - 案例分析 - 系统维护与设计 ...

  3. Java设计模式—门面模式(带案例分析)

    (尊重劳动成果,转载请注明出处:https://blog.csdn.net/qq_25827845/article/details/52032536冷血之心的博客) 目录 1.门面模式的定义: 2.通 ...

  4. 软件架构最佳实践和案例分析

    软件架构是软件业的一个重要研究领域,正受到越来越多的关注,其地位也日益明显地体现出来.而架构设计师--也就成为软件系统的最高设计者.此课程就是为有志成为卓越架构师的人准备的培训课程.作为架构设计师,需 ...

  5. 系分 - 案例分析 - 需求分析

    个人总结,仅供参考,欢迎加好友一起讨论 文章目录 系分 - 案例分析 - 需求分析 结构化分析SA 数据流图DFD 答题技巧 典型例题 1 题目描述 参考答案 典型例题 2 题目描述 参考答案 面向对 ...

  6. 【软考系统架构设计师】2017下系统架构师案例分析历年真题

    [软考系统架构设计师]2017下系统架构师案例分析历年真题 2017下系统架构师案例分析历年真题 [软考系统架构设计师]2017下系统架构师案例分析历年真题 2017下系统架构师案例分析试题一(系统架 ...

  7. 软考高级-系统架构师-案例分析-案例题2

    案例题2~5都是选做题,选2道题进行回答,历年第二题主要考查了结构化设计(流程图,数据流图),面向对象(概念,UML等),数据库技术,WEB技术,分布式技术其中结构化设计,面向对象和数据库技术出现频率 ...

  8. 案例分析 2 :系统建模或数据库设计

    案例分析 2 :系统建模或数据库设计 21 20 19 18 17 16 15 15 second 14 12 21 [Q1] 在系统初步运行后,发现系统数据访问性能较差.经过分析,刘工认为原来数据库 ...

  9. 软件设计师案例分析题答案汇总!(4)

    为大家在考前整理了软件设计师案例分析题答案汇总!考前可以速记一下. 有电子版本的,可以打印下载来看看! 第 12 问 如何区分泛化关系? 答: 泛化关系一般可以体现为 is-a 或者 has-a,也就 ...

最新文章

  1. 为什么很多 SpringBoot 开发者放弃了 Tomcat,选择了 Undertow?
  2. linux学习笔记-rpm
  3. 谈谈对于企业级系统架构的理解(zz)
  4. 系统间通信3:RPC的基本概念
  5. BZOJ-3110-K大数查询-ZJOI2013-整体二分
  6. 【JS 逆向百例】百度翻译接口参数逆向
  7. 基于JAVA+SpringMVC+MYSQL的学生请假管理系统
  8. JsonHelper(Json帮助类)
  9. WebKit新特性WebGL
  10. [转]Android ANR 分析解决方法
  11. Linux读取内核空间,linux,arm_arm如何在内核空间直接读写某个物理地址(或者进程的虚拟地址),linux,arm,c,linux-kernel,memory - phpStudy...
  12. 纯php实现中秋博饼游戏(2):掷骰子并输出结果
  13. Java中级软件工程师应该具备的知识点
  14. 解决:ORA-06502: PL/SQL: numeric or value error: NULL index table key value
  15. 拷机软件 从软件测试中得知自己机器的性能
  16. 于娟的忠告----生命只有一次,活着才是王道啊!!!
  17. iphone 控制android手机,如何从Apple手机远程控制Android手机
  18. 网易邮箱注册HTML+CSS
  19. 罗敏为什么不焦虑? | 一点财经
  20. 烟雨江湖服务器维护,烟雨江湖初始属性选择推荐 烟雨江湖出生攻略

热门文章

  1. vue.js的手脚架vue-cli项目搭建的步骤
  2. html中无语义的标签,HTML5 语义元素
  3. ckeditor4 +Wiris MathType + Mathjax 渲染 + Tax 公式编辑
  4. Linux Debian常用下载工具Transmission和qbittorrent
  5. [论文翻译]基于图像自适应GAN重建
  6. 2022 APMCM亚太数学建模竞赛 C题 全球是否变暖 问题一python代码实现(更新完毕)
  7. 每天都在用WiFi,WiFi和无线网络什么关系?了解此篇足矣
  8. 谷歌地图应用——基础篇之入门
  9. php 可视化编辑建站源码,CmsEasy可视化编辑商城系统 v7.3.1
  10. 《运营之光》-- 学习笔记(三)