概述
这里附带Word文档下载https://download.csdn.net/download/qq_36986067/11166539
目录
实验一 单例模式的应用
实验二 工厂模式的应用
实验三 抽象工厂模式的应用
实验四 建造者模式的应用
实验五 适配器模式的应用
实验六 桥接模式的应用
实验七 装饰模式的应用
实验八 外观模式的应用
实验九 观察者模式的应用
实验十 访问者模式的应用
实验一 单例模式的应用
1 实验目的
1) 掌握单例模式(Singleton)的特点
2) 分析具体问题,使用单例模式进行设计。
2 实验内容和要求
很多应用项目都有配置文件,这些配置文件里面定义一些应用需要的参数数据。
通常客户端使用这个类是通过new一个AppConfig的实例来得到一个操作配置文件内容的对象。如果在系统运行中,有很多地方都需要使用配置文件的内容,系统中会同时存在多份配置文件的内容,这会严重浪费内存资源。
事实上,对于AppConfig类,在运行期间,只需要一个对象实例就够了。那么应该怎么实现呢?绘制该模式的UML图。
3 实验环境
Eclipse
语言:Java
4 UML图
5 实验主要代码
class AppConfig {
private static AppConfig config;
private String paramaterA;//参数
public String getParamaterA() {
return paramaterA;
}
public void setParamaterA(String paramaterA) {
this.paramaterA = paramaterA;
}
//私有化构造方法
private AppConfig() {
}
public static AppConfig GetInstanse() {
if (config == null) {
config = new AppConfig();
}
return config;
}
}
//测试类
public class Client {
public static void main(String[] args) {
AppConfig appConfig1 = AppConfig.GetInstanse();
appConfig1.setParamaterA("ParaA");
System.out.println("appconfig1 = " + appConfig1.getParamaterA());
}
}
实验二 工厂模式的应用
1 实验目的
1) 掌握工厂模式(Factory)的特点
2) 分析具体问题,使用工厂模式进行设计。
2 实验内容和要求
有一个OEM制造商代理做HP笔记本电脑(Laptop),后来该制造商得到了更多的品牌笔记本电脑的订单Acer,Lenovo,Dell,该OEM商发现,如果一次同时做很多个牌子的本本,有些不利于管理。利用工厂模式改善设计,实现该OEM制造商的工厂模式。绘制该模式的UML图。
3 实验环境
Eclipse
语言:Java
4 UML图
5 实验主要代码
public abstract class Laptop {// 一个抽象类
public abstract void Show();
}
public class HP extends Laptop{
public void Show() {
// TODO Auto-generated method stub
System.out.println("HP笔记本");
}
}
public class Acer extends Laptop {
@Override
public void Show() {
// TODO Auto-generated method stub
System.out.println("Acer笔记本");
}
}
public class Lenovo extends Laptop {
@Override
public void Show() {
// TODO Auto-generated method stub
System.out.println("Lenovo笔记本");
}
}
//抽象工厂类
public abstract class AbFactory {
public abstract Laptop CreateLp();
}
public class HPFactory extends AbFactory {
@Override
public Laptop CreateLp() {
return new HP();
}
}
public class LenovoFactory extends AbFactory {
@Override
public Laptop CreateLp() {
// TODO Auto-generated method stub
return new Lenovo();
}
}
public class AcerFactory extends AbFactory {
@Override
public Laptop CreateLp() {
// TODO Auto-generated method stub
return new Acer();
}
}
//测试类
public class Client {
public static void main(String[] args) {
// TODO Auto-generated method stub
AbFactory fc1=new HPFactory();
AbFactory fc2=new AcerFactory();
AbFactory fc3=new LenovoFactory();
Laptop hp=fc1.CreateLp();
Laptop acer=fc2.CreateLp();
Laptop lenovo=fc3.CreateLp();
hp.Show();
acer.Show();
lenovo.Show();
}
}
实验三 抽象工厂模式的应用
1 实验目的
1) 掌握抽象工厂模式(Abstract Factory)的特点
2) 分析具体问题,使用抽象工厂模式进行设计。
2 实验内容和要求
麦当劳(McDonalds)和肯德基(KFC)快餐店都经营汉堡(Hamburg)和可乐(Cola),实现这两个快餐店经营产品的抽象工厂模式。绘制该模式的UML图。
3 实验环境
Eclipse
语言:Java
4 UML图
5 实验主要代码
public abstract class Hamburg {// 一个抽象汉堡包类
public abstract void Show();
}
public class McHamburg extends Hamburg {
@Override
public void Show() {
System.out.println("麦当劳的汉堡");
}
}
public class KFCHamburg extends Hamburg {
@Override
public void Show() {
// TODO Auto-generated method stub
System.out.println("肯德基的汉堡");
}
}
public abstract class Cola {
public abstract void Show();
}
public class McCola extends Cola {
@Override
public void Show() {
// TODO Auto-generated method stub
System.out.println("麦当劳的可乐");
}
}
public class KFCCola extends Cola {
@Override
public void Show() {
// TODO Auto-generated method stub
System.out.println("肯德基的可乐");
}
}
//抽象工厂类
public abstract class Factory {
public abstract Hamburg CreateHambury();
public abstract Cola CreateCola();
}
public class MHfactory extends Factory {
@Override
public Hamburg CreateHambury() {
// TODO Auto-generated method stub
return new McHamburg();
}
@Override
public Cola CreateCola() {
// TODO Auto-generated method stub
return new McCola();
}
}
public class KFCfactory extends Factory {
@Override
public Hamburg CreateHambury() {
// TODO Auto-generated method stub
return new KFCHamburg();
}
@Override
public Cola CreateCola() {
// TODO Auto-generated method stub
return new KFCCola();
}
}
//测试类
public class Client {
public static void main(String[] args) {
// TODO Auto-generated method stub
Factory fc1=new MHfactory();
Hamburg h1=fc1.CreateHambury();
h1.Show();
Factory fc2=new KFCfactory();
Cola c1=fc2.CreateCola();
c1.Show();
}
}
实验四 建造者模式的应用
1 实验目的
1) 掌握建造者模式(Builder)的特点
2) 分析具体问题,使用建造者模式进行设计。
2 实验内容和要求
建造者模式是一种创建型模式,它主要是应对项目中一些复杂对象的创建工作。所谓“复杂对象”,是指此对象中还含有其它的子对象。我们现在定义一个场景:汽车生产必须包含车轮(Wheel)、油箱(OilBox)和车身(Body),应用建造者模式,实现该设计,构建BMW品牌和BenZ品牌汽车生产。绘制该模式的UML图。
3 实验环境
Eclipse
语言:Java
4 UML图
5 实验主要代码
//汽车类
public class Car {
private String wheels;
private String oilbox;
private String body;
public String getWheels() {
return wheels;
}
public void setWheels(String wheels) {
this.wheels = wheels;
}
public String getOilbox() {
return oilbox;
}
public void setOilbox(String oilbox) {
this.oilbox = oilbox;
}
public String getBody() {
return body;
}
public void setBody(String body) {
this.body = body;
}
public void show() {
System.out.println(wheels);
System.out.println(oilbox);
System.out.println(body);
}
}
public abstract class Builder {
Car createCar = new Car();
public abstract void BuildWheels();
public abstract void BuildOilBox();
public abstract void BuildBody();
public Car GetCar() {
return createCar;
}
}
public class BenzBuilder extends Builder {
@Override
public void BuildWheels() {
// TODO Auto-generated method stub
createCar.setBody("benz的车身");
}
@Override
public void BuildOilBox() {
// TODO Auto-generated method stub
createCar.setOilbox("benz的邮箱");
}
@Override
public void BuildBody() {
// TODO Auto-generated method stub
createCar.setWheels("benz的轮子");
}
}
public class BMWBuilder extends Builder {
@Override
public void BuildWheels() {
// TODO Auto-generated method stub
createCar.setWheels("bmw的车轮");
}
@Override
public void BuildOilBox() {
// TODO Auto-generated method stub
createCar.setOilbox("bmw的油箱");
}
@Override
public void BuildBody() {
// TODO Auto-generated method stub
createCar.setBody("bmw的车身");
}
}
//指挥者
public class Director {
private Builder builder;
public Director(Builder builder) {
this.builder = builder;
}
public void setBuilder(Builder builder) {
this.builder = builder;
}
public void CreateCar() {
builder.BuildBody();
builder.BuildOilBox();
builder.BuildWheels();
}
}
//客户端类
public class Client {
public static void main(String[] args) {
// TODO Auto-generated method stub
Car car;
Builder builder = new BenzBuilder();
Director dir = new Director(builder);
dir.CreateCar();
car = builder.GetCar();
car.show();
}
}
实验五 适配器模式的应用
1 实验目的
1) 掌握适配器模式(Adapter)的特点
2) 分析具体问题,使用适配器模式进行设计。
2 实验内容和要求
一个软件团队开发绘图系统,设计了圆对象(Circle)、矩形对象(Rectangle),线对象(Line)都支持Draw()函数,即可以通过Draw()函数绘制图形。为了加快项目进度,将角度对象(Angle)绘制功能交给了合作团队实现。但合作团队将角度对象绘制函数定为了DrawAngle()。绘图系统提供给用户后,用户不满意,希望能统一的调用,不用记太多命令。应用适配器模式,用控制台应用程序完善该设计。绘制该模式的UML图。
3 实验环境
Eclipse
语言:Java
4 UML图
5 实验主要代码
//定义图形接口
public interface Shape {
// 统一行为,可以画圆、矩形等
public void draw();
}
//下面分别是画圆、矩形、线条类
public class Circle implements Shape {
@Override
public void draw() {
System.out.println("画一个圆");
}
}
public class Rectangle implements Shape{
@Override
public void draw() {
System.out.println("画一个矩形");
}
}
public class Line implements Shape {
@Override
public void draw() {
System.out.println("画一条线");
}
}
//这是外包做的角度类
public class Angle {
public void drawAngle() {
System.out.println("画一个角度");
}
}
public class AngleAdapter extends Angle implements Shape {
public void draw() {
super.drawAngle();
}
}
//客户端测试类
public class Client {
public static void main(String[] args) {
Shape c = new Circle();
Shape r = new Rectangle();
Shape l = new Line();
Shape a = new AngleAdapter();
c.draw();
r.draw();
l.draw();
a.draw(); // 适配器将接口统一了
}
}
实验六 桥接模式的应用
1 实验目的
1) 掌握桥接模式(Bridge)的特点
2) 分析具体问题,使用桥接模式进行设计。
2 实验内容和要求
一个咖啡店可以提供大杯(JorumCoffee)、中杯(MediumCoffee)、小杯(SmallCoffee)的咖啡(Coffee),为了满足不同用户的口味,在咖啡中可以添加牛奶(Milk),或者糖(Sugar),或者柠檬(Lemon),提供给用户不同口味的组合,如大杯咖啡加牛奶,中杯咖啡加糖,小杯咖啡加柠檬,小杯咖啡加糖等。应用桥接模式,用控制台应用程序实现该设计。绘制该模式的UML图。
3 实验环境
Eclipse
语言:Java
4 UML图
5 实验主要代码
//口味
public interface Additives {
public void add();
}
public class Milk implements Additives {
@Override
public void add() {
System.out.print("加了牛奶");
}
}
public class Sugar implements Additives {
@Override
public void add() {
System.out.print("加了糖");
}
}
public class Lemon implements Additives {
@Override
public void add() {
System.out.print("加了柠檬");
}
}
//咖啡接口
public interface Coffee {
public void add(Additives additives);
public void drink();
}
public class SmallCoffee implements Coffee {
private Additives additives;
@Override
public void add(Additives additives) {
this.additives=additives;
}
@Override
public void drink() {
additives.add();
System.out.println("的小咖啡");
}
}
public class MediumCoffee implements Coffee {
private Additives additives;
@Override
public void add(Additives additives) {
this.additives=additives;
}
@Override
public void drink() {
additives.add();
System.out.println("的中咖啡");
}
}
public class BigCoffee implements Coffee {
private Additives additives;
@Override
public void add(Additives additives) {
this.additives=additives;
}
@Override
public void drink() {
additives.add();
System.out.println("的大咖啡");
}
}
//测试类
public class Client {
public static void main(String[] args) {
Coffee coffee = new SmallCoffee();
Additives sugar=new Sugar();
coffee.add(sugar);
coffee.drink();
}
}
实验七 装饰模式的应用
1 实验目的
1) 掌握装饰模式(Decorator)的特点
2) 分析具体问题,使用装饰模式进行设计。
2 实验内容和要求
DQ是著名的冰激凌专卖店,口味非常丰富,每种产品可以添加多种配料,如 (1)奥利奥OreoCookies
(2)杏仁Almond
(3)腰果Cashews
(4)核桃pecan
(5)葡萄干raisin
(6)巧克力ChocolateChip
(7)果酱Strawberry等,
每添加一种配料需要2元钱,需要设计一个系统来计算价格。应用装饰模式,用控制台应用程序实现该设计。绘制该模式的UML图。
3 实验环境
Eclipse
语言:Java
4 UML图
5 实验主要代码
public abstract class Component {
public abstract void BaseIce();
public abstract int Money();
}//组件
public class IceCream extends Component {
@Override
public void BaseIce() {
System.out.println(" 冰激凌");
}
@Override
public int Money() {
return 10;
}
}
//抽象装饰类
public class Decorator extends Component {
protected Component component;
public void Decorate(Component component)
{
this.component = component;
}
@Override
public void BaseIce() {
if (component != null)
{
component.BaseIce();
}
}
@Override
public int Money() {
// TODO Auto-generated method stub
return component.Money();
}
}
//具体装饰类
public class OreoCookies extends Decorator {
@Override
public void BaseIce() {
super.BaseIce();
System.out.println(" 奥利奥");
}
@Override
public int Money() {
// TODO Auto-generated method stub
return super.Money()+2;
}
}
public class Almond extends Decorator {
@Override
public void BaseIce() {
super.BaseIce();
System.out.println(" 杏仁");
}
@Override
public int Money() {
// TODO Auto-generated method stub
return super.Money()+2;
}
}
public class Cashews extends Decorator {
@Override
public void BaseIce() {
super.BaseIce();
System.out.println(" 腰果");
}
@Override
public int Money() {
// TODO Auto-generated method stub
return super.Money()+2;
}
}
public class Pecan extends Decorator {
@Override
public void BaseIce() {
super.BaseIce();
System.out.println(" 核桃");
}
@Override
public int Money() {
// TODO Auto-generated method stub
return super.Money()+2;
}
}
public class Raisin extends Decorator {
public void BaseIce() {
super.BaseIce();
System.out.println(" 葡萄干");
}
@Override
public int Money() {
// TODO Auto-generated method stub
return super.Money()+2;
}
}
public class ChocolateChip extends Decorator {
public void BaseIce() {
super.BaseIce();
System.out.println(" 巧克力");
}
@Override
public int Money() {
// TODO Auto-generated method stub
return super.Money()+2;
}
}
public class Strawberry extends Decorator {
public void BaseIce() {
super.BaseIce();
System.out.println(" 果酱");
}
@Override
public int Money() {
// TODO Auto-generated method stub
return super.Money()+2;
}
}
//客户端测试类
public class Client {
public static void main(String[] args) {
IceCream icecream = new IceCream();
OreoCookies O = new OreoCookies();
Almond A = new Almond();
Cashews C = new Cashews();
Pecan P = new Pecan();
Raisin R = new Raisin();
ChocolateChip Ch = new ChocolateChip();
Strawberry S = new Strawberry();
System.out.println("冰激凌价格:"+icecream.Money()+"元");
System.out.println("购买的冰淇淋组合:");
O.Decorate(icecream);
A.Decorate(O);
C.Decorate(A);
P.Decorate(C);
Ch.Decorate(P);
Ch.BaseIce();
System.out.println("商品价格:" + Ch.Money() + "元");
}
}
实验八 外观模式的应用
1 实验目的
1) 掌握外观模式(Facade)的特点
2) 分析具体问题,使用外观模式进行设计。
2 实验内容和要求
一个保安系统的,由录像机、电灯、红外线监控和警报器组成。保安系统的操作人员需要经常将这些仪器启动和关闭。保安类需要用到所有的录像机(Camera)、电灯(Light)、感应器(Sensor)和警报器(Alarm)对象,保安觉得使用不方便。应用外观模式,用控制台应用程序改进该设计。绘制该模式的UML图。
3 实验环境
Eclipse
语言:Java
4 UML图
5 实验主要代码
//定义一个设备接口
public interface Equipment {
public void turnOn(); // 打开设备
public void turnOff(); // 关闭设备
}
public class Camera implements Equipment {
public void turnOn() {
System.out.println("打开录像机");
}
public void turnOff() {
System.out.println("关闭录像机");
}
}
public class Light implements Equipment {
public void turnOn() {
System.out.println("打开电灯");
}
public void turnOff() {
System.out.println("关闭电灯");
}
}
public class Sensor implements Equipment {
@Override
public void turnOn() {
System.out.println("打开传感器");
}
@Override
public void turnOff() {
System.out.println("关闭传感器");
}
}
public class Alarm implements Equipment {
@Override
public void turnOn() {
System.out.println("打开警报器");
}
@Override
public void turnOff() {
System.out.println("关闭警报器");
}
}
public class Console {
private Equipment camera = new Camera();
private Equipment light = new Light();
private Equipment sensor = new Sensor();
private Equipment alarm = new Alarm();
public void turnOnAll() {
camera.turnOn();
light.turnOn();
sensor.turnOn();
alarm.turnOn();
}
public void turnOffAll() {
camera.turnOff();
light.turnOff();
sensor.turnOff();
alarm.turnOff();
}
}
public class Cline {
public static void main(String[] args) {
Console console = new Console();
console.turnOnAll();
console.turnOffAll();
}
}
实验九 观察者模式的应用
1 实验目的
1) 掌握观察者模式(Observer)的特点
2) 分析具体问题,使用观察者模式进行设计。
2 实验内容和要求
网上商店中如果商品(product)在名称(name)、价格(price)等方面有变化,系统能自动通知会员,将是网上商店区别传统商店的一大特色。如何设计实现? 说明你所选择的设计模式,画出类关系图并指明各个类的角色。绘制该模式的UML图。
3 实验环境
Eclipse
语言:Java
4 UML图
5 实验主要代码
public abstract class Observer {
public abstract void update();
}
public class Subject {
private ArrayList<Observer> observers = new ArrayList<Observer>();
public void increase(Observer observer){
observers.add(observer);
}
public void delete(Observer observer){
observers.remove(observer);
}
public void notifyVIP(){
for(int i=0; i<observers.size(); i++){
observers.get(i).update();
}
}
}
public class MessageObserver extends Observer {
private String name;
private String price;
private MessageSubject messageSubject;
public MessageObserver(MessageSubject messageSubject) {
this.messageSubject = messageSubject;
}
@Override
public void update() {
name = messageSubject.getName();
price = messageSubject.getPrice();
System.out.println("名称变化:"+name);
System.out.println("价格变化:"+price);
}
}
public class MessageSubject extends Subject{
private String name;
private String price;
public MessageSubject(String name,String price){
this.name = name;
this.price = price;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
}
//客户端测试类
public class Client {
public static void main(String[] args){
MessageSubject messageSubject1 = new MessageSubject("联想笔记本", "降价");
MessageSubject messageSubject2 = new MessageSubject("小米手机", "未降价");
messageSubject1.increase(new MessageObserver(messageSubject1));
messageSubject2.increase(new MessageObserver(messageSubject2));
System.out.println("尊贵的会员,您之前加入购物车的商品:");
messageSubject1.notifyVIP();
System.out.println("尊贵的会员,您之前加入购物车的商品:");
messageSubject2.notifyVIP();
}
}
实验十 访问者模式的应用
1 实验目的
1) 掌握访问者模式(Visitor)的特点
2) 分析具体问题,使用访问者模式进行设计。
2 实验内容和要求
苹果公司有工业设计,营销零售,财务管理等多个多部门,工业设计部门有很多工程师(Engineer),营销零售部门有很多销售员(Salesman),财务管理部门有很多经济师(Economist),他们都各自有自己的专长。人事管理部门需要统一的管理各类人员的收入和假期等福利。
年底,苹果公司进行了表彰,工业设计部门小张、小王表现突出,完成了很多产品的研发;营销零售部门小陈、小李销售业绩突出;财务管理部门小周的资金管理高效,人事部门需要统一给他们加薪500元,加假期3天。应用访问者模式,用控制台应用程序实现该设计。绘制该模式的UML图。
3 实验环境
Eclipse
语言:Java
4 UML图
5 实验主要代码
public class test {
static void Main(String[] args)
{
EnginDepartment enginDepartment = new EnginDepartment();
SaleDepartment saleDepartment = new SaleDepartment();
EconomyDepartment economyDepartment = new EconomyDepartment();
Engineer xiaozhang = new Engineer("小张",5000,30);
Engineer xiaowang = new Engineer("小王", 5100, 29);
enginDepartment.insert(xiaowang);
enginDepartment.insert(xiaozhang);
Salesman xiaochen = new Salesman("小陈", 4500, 10);
Salesman xiaoli = new Salesman("小李", 6000, 5);
saleDepartment.insert(xiaochen);
saleDepartment.insert(xiaoli);
Economist xiaozhou = new Economist("小周", 5000, 25);
economyDepartment.insert(xiaozhou);
enginDepartment.show();
saleDepartment.show();
economyDepartment.show();
Employees employees = new Employees();
employees.attach(xiaozhang);
employees.attach(xiaowang);
employees.attach(xiaochen);employees.attach(xiaoli);
employees.attach(xiaozhou);
IncomeVisitor incomeVisitor = new IncomeVisitor();
DayVisitor dayVisitor = new DayVisitor();
employees.accept(incomeVisitor);
employees.accept(dayVisitor);
}
}
/**
* 访问者模式
*/
abstract class Employee {
private String name; // 姓名
private double income; // 收入
private int day; // 假期
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getIncome() {
return income;
}
public void setIncome(double income) {
this.income = income;
}
public int getDay() {
return day;
}
public void setDay(int day) {
this.day = day;
}
public abstract void accept(Visitor visitor);
}//工程师
class Engineer extends Employee {
public Engineer(String name, double income, int day) {
setName(name);
setIncome(income);
setDay(day);
}
public void accept(Visitor visitor) {
visitor.visit(this);
}
}
//销售员
class Salesman extends Employee {
public Salesman(String name, double income, int day) {
setName(name);
setIncome(income);
setDay(day);
}
public void accept(Visitor visitor) {
visitor.visit(this);
}
}
//经济师
class Economist extends Employee {
public Economist(String name, double income, int day) {
setName(name);
setIncome(income);
setDay(day);
}
public void accept(Visitor visitor) {
visitor.visit(this);
}
}
//工业设计部
class EnginDepartment {
private List<Engineer> engineers = new ArrayList();public void insert(Engineer engineer) // 添加工程师
{
engineers.add(engineer);
}
public void delete(Engineer engineer) // 删除工程师
{
engineers.remove(engineer);
}
public void show() // 显示所有工程师信息
{
for (int i = 0; i < engineers.size(); i++) {
System.out.println("工业设计部:" + engineers.get(i).getName() + " 薪资为:
" + engineers.get(i).getIncome() + " 假期为:"
+ engineers.get(i).getDay());
}
}
}
//销售部
class SaleDepartment {
private List<Engineer> salesman = new ArrayList();
public void insert(Engineer engineer) // 添加工程师
{
salesman.add(engineer);
}
public void delete(Engineer engineer) // 删除工程师
{
salesman.remove(engineer);
}
public void show() // 显示所有工程师信息
{
for (int i = 0; i < salesman.size(); i++) {
System.out.println("工业设计部:" + salesman.get(i).getName() + " 薪资为:
" + salesman.get(i).getIncome() + " 假期为:"
+ salesman.get(i).getDay());
}
}}
//财务部
class EconomyDepartment {
private List<Engineer> economists = new ArrayList();
public void insert(Engineer engineer) // 添加工程师
{
economists.add(engineer);
}
public void delete(Engineer engineer) // 删除工程师
{
economists.remove(engineer);
}
public void show() // 显示所有工程师信息
{
for (int i = 0; i < economists.size(); i++) {
System.out.println("工业设计部:" + economists.get(i).getName() + " 薪资
为:" + economists.get(i).getIncome()
+ " 假期为:" + economists.get(i).getDay());
}
}
}
//观察者父类
abstract class Visitor {
public abstract void visit(Employee employee);
}
//涨薪类
class IncomeVisitor extends Visitor {
public void visit(Employee employee) {
employee.setIncome(employee.getIncome() + 500);
System.out.println(employee.getName() + "的薪资为:" + employee.getIncome());
}
}
//涨假期类
class DayVisitor extends Visitor {
public void visit(Employee employee) {
employee.setDay(employee.getDay() + 500); // 假期增加 3 天System.out.println(employee.getName() + "的假期为:" + employee.getDay() + "
天");
}
}
//待表彰员工
class Employees {
private List<Employee> employees = new ArrayList();
public void attach(Employee employee) // 添加表彰员工
{
employees.add(employee);
}
public void detach(Employee employee) // 删除表彰员工
{
employees.remove(employee);
}
public void accept(Visitor visitor) // 奖励员工
{
for (int i = 0; i < employees.size(); i++) {
employees.get(i).accept(visitor);
}
}
}
最后
以上就是坚强路人为你收集整理的设计模式实验代码实验一 单例模式的应用实验二 工厂模式的应用实验三 抽象工厂模式的应用实验四 建造者模式的应用实验五 适配器模式的应用实验六 桥接模式的应用实验七 装饰模式的应用实验八 外观模式的应用实验九 观察者模式的应用实验十 访问者模式的应用的全部内容,希望文章能够帮你解决设计模式实验代码实验一 单例模式的应用实验二 工厂模式的应用实验三 抽象工厂模式的应用实验四 建造者模式的应用实验五 适配器模式的应用实验六 桥接模式的应用实验七 装饰模式的应用实验八 外观模式的应用实验九 观察者模式的应用实验十 访问者模式的应用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复