定义:外观模式是一种通过为多个复杂子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式题目:以医院为例,就医时患者需要与医院不同的职能部门交互,完成挂号、门诊、取药等操作。为简化就医流程,设置了一个接待员的职位,代患者完成上述就医步骤,患者则只需与接待员交互即可。 import java.util.*; interface Patient { String getName(); }
题目:在某系统中,类interval代表由下界(lower bound)和上界(upper bound)定义的区间。要求采用不同的格式显示区间范围。如【lower bound.upper bound】;【lower bound..upper bound】;【lower bound-upper bound】等。现采用策略模式实现该需求:enum TYPE { COMMA, DOTS, LINE }
定义:动态地给对象添加一些额外的职责。就扩展功能而言,装饰器模式比生成子类方式更为灵活。题目:某发票(Invoice)由抬头(Head)部分、正文部分和脚注(Foot)部分构成,现采用装饰模式实现打印发票的功能,import java.io.*; class Invoice { public void printInvoice() { System.out.println ( "Thi
定义:动态地给对象添加一些额外的职责。就扩展功能而言,装饰器模式比生成子类方式更为灵活。题目:某咖啡店卖咖啡时,可以根据顾客的要求在其中加入各种配料,咖啡店会根据所加入的配料来计算费用。咖啡店所供应的咖啡及配料的种类和价格如下图所示现采用装饰器模式来实现计算费用的功能:import java.util.*; abstract class Beverage { /
定义:将抽象部分与它的实现部分分离,使它们都可以独立的变化。题目:欲开发一个绘图软件,要求使用不同的绘图程序绘制不同的图形。以绘制直线和圆形为例,对应的绘图程序如表,该绘图软件的扩展性要求,将不断扩充新的图形和新的绘图程序。为了避免出现类爆炸的情况,现采用桥接模式来实现上述要求:interface Drawing{ public void drawLine(double x1,double y
定义:将抽象部分与它的实现部分分离,使它们都可以独立的变化。题目:某图像预览程序要求能够查看BMP、JPEG和GIF三种格式的文件,且能够在Windows和Linux两种操作系统上运行。程序需具有较好的扩展性以支持新的文件格式和操作系统。为满足上述需求,并减少所需生成的子类数目,现采用桥接模式进行设计。import java.util.*; class Matrix{ //各种格式的文件最终都被转
定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。importjava.util.* class Product { private String partA; private String partB; public Product(){} public void setPartA(String s){ partA= s; } public vo
定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示题目:某快餐厅主要制作并出售儿童套餐,一般主要包括主餐(各类披萨)、饮料和玩具,其餐品种类可能不同,但其制作过程相同。前台服务员(Waiter)调度厨师制作套餐。现采用生成器(Builder)模式实现制作过程class Pizza { private String parts; //存储配料
题目:某航空公司的会员积分系统将其会员分为:普卡(Basic)、银卡(Silver)、金卡(Gold)三个等级。非会员(NonMember)可以申请为普卡会员。会员的等级根据其一年内累积的历程数进行调整。描述会员等级调整的状态图如下,现采用状态模式描述上述场景import java.util.*; abstract class CState { public int flyMiles;
定义:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类题目:某大型商场内安装了多个简易的纸巾售卖机,自动出售2元钱一包的纸巾,且每次仅出售一包纸巾,状态图如下:采用状态模式来实现该纸巾售卖机,其中类SoldState、SoldOutState、NoQuarterState和HasQuarterState分别表示售出纸巾、纸巾售完、没有投币、有2元钱import java.ut
定义:观察者模式定义了对象间的一种一对多依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新题目:某实验室欲建立一个实验室环境监测系统,能够显示实验室的温度、湿度以及洁净度等环境数据。当获取到最新的环境测量数据时,显示的环境数据能够更新。现采用观察者模式来开发该系统import java.util.*; interface Observer{ public voi
题目:某大型购物中心欲开发一套收银软件,要求其能够支持购物中心在不同时期推出的各种促销活动,如打折、返利(例如,满300返100)等等。现采用策略模式实现该要求。import java.util.*; enum TYPE{NORMAL,CASH_DISCOUNT,CASH_RETURN}; interface CashSuper{ public double accptCash(doubl
定义:定义一系列的算法,把它们一个个封装起来,并且使他们能够相互替换。此模式使得算法可以独立于使用它们的客户而变化。题目:某软件公司欲开发一款汽车竞速类游戏,需要模拟长轮胎和短轮胎急刹车时在路面上留下的不同痕迹,并考虑后续能模拟更多种轮胎急刹车时的痕迹。现采用策略设计模式来实现该需求。import java.util.*; interface BrakeBehavior{ pubilic
定义:当数组中的元素已经排列有序时,可以采用折半/二分查找法查找下一个元素。题目:请给出在含有12个元素的有序表{1,4,10,16,17,18,23,29,33,40,50,51}中二分查找关键字17的过程。下面的函数biSearch(int r[],int low,int high,int key)用非递归方式在数组r中进行二分查找,函数biSearch_rec(int r[],int low
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号