当前位置:文档之家› 软件设计模式报告

软件设计模式报告

实验过程
一,相应的角色:
策略:Sort
具体策略:BubbleSort,InsertionSort,QuickSort,SelectionSort,
上下文:ArrayHandler,XMLUtil,ArrayHandler
二,Uml类图:
3.相应的代码
ArrayHandler .java
package排序策略;
{
changeCommand.execute();
}
public void close()
{
closeCommand.execute();
}
}
TVChangeCommand.java
package电视机遥控器;
public class TVChangeCommand implements AbstractCommand
{
private Television tv;
public TVOpenCommand()
{
tv = new Television();
}
public void execute()
{
tv.open();
}
}
Television.java
package电视机遥控器;
public class Television {
sort(arr,q+1,r);
}
}
public int partition(int[] a, int p, int r)
{
int temp;
if(arr[i]>arr[j])
{
temp=arr[j];
arr[j]=arr[i];
arr[i]=temp;
}
}
}
System.out.println("冒泡排序");
return arr;
}
}
InsertionSort.java
package排序策略;
public class InsertionSort implements Sort
实验目的:理解行为型模式在不同的对象之间划分责任和算法的抽象化。行为型模式不仅仅关注类和对象的结构,而且重点关注它们之间的相互作用。理解并掌握行为型模式分为类行为型模式和对象行为型模式两种。掌握职责链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式、访问者模式等模式的定义、结构和应用。
break;
}
arr[j]=temp;
}
System.out.println("插入排序");
return arr;
}
}
QuickSor.java
package排序策略;
public class QuickSort implements Sort
{
public int[] sort(int arr[])
public interface AbstractCommand {
public void execute();
}
Cipher.java
package电视机遥控器;
public interface Cipher {
public String encrypt(String plainText);
}
Controller.java
具体的观察者:Mouse,Dog
二,Uml类图:
三,相应的代码:
MySubject.Java:
package猫狗老鼠;
import java.util.*;
public abstract class MySubject
{
protected ArrayList observers = new ArrayList();
实验要求:完成给出的模式模型结构,指出相应的角色;完成相应的代码编写。
实验环境(实验设备)
NetBeans IDE 8.0
实验内容
1.猫、狗与老鼠
假设猫是老鼠和狗的观察目标,老鼠和狗是观察者,猫叫老鼠跑,狗也跟着叫。请使用观察者模式描述该过程。
实验过程
一,相应的角色:
主题:Mysubject
具体主题:Cat
public class Dog implements MyObserver
{
public void response()
{
System.out.println("狗跟着叫!");
}
}
Mouse.java:
package猫狗老鼠;
public class Mouse implements MyObserver
public void open()
{
System.out.println("打开电视机!");
}
public void close()
{
System.out.println("关闭电视机!");
}
public void changeChannel()
{
System.out.println("切换电视频道!");
}
}
电视机遥控器.java
package电视机遥控器;
public class电视机遥控器{
public static void main(String[] args) {
AbstractCommand openCommand,closeCommand,changeCommand;
openCommand = new TVOpenCommand();
//注册方法
public void attach(MyObserver observer)
{
observers.add(observer);
}
//注销方法
public void detach(MyObserver observer)
{
observers.remove(observer);
}
public abstract void cry(); //抽象通知方法
{
private Television tv;
public TVChangeCommand()
{
tv = new Television();
}
public void execute()
{
tv.changeChannel();
}
}
TVCloseCommand.java
package电视机遥控器;
public class TVCloseCommand implements AbstractCommand
{
public int[] sort(int arr[])
{
int len=arr.length;
for(int i=1;i<len;i++)
{
int j;
int temp=arr[i];
for(j=i;j>0;j--)
{
if(arr[j-1]>temp)
{
arr[j]=arr[j-1];
}else
{
public void response()
{
System.out.println("老鼠努力逃跑!");
}
}
猫狗老鼠.java:
package猫狗老鼠;
public class猫狗老鼠{
public static void main(String[] args) {
MySubject subject=new Cat();
}
}
结果截图:
2.电视机遥控器
电视机是请求的接收者,遥控器是请求的发送者,遥控器上有一些按钮,不同的按钮对应电视机的不同操作。抽象命令角色由一个命令接口来扮演,有三个具体的命令类实现了抽象命令接口,这三个具体命令类分别代表三种操作:打开电视机、关闭电视机和切换频道。显然,电视机遥控器就是一个典型的命令模式应用实例。
{
private Television tv;
public TVCloseCommand()
{
tv = new Television();
}
public void execute()
{
tv.close();
}
}
TVOpenCommand .java
package电视机遥控器;
public class TVOpenCommand implements AbstractCommand
{
System.out.println("猫叫!");
System.out.println("----------------------------");
for(Object obs:observers)
{
((MyObserver)obs).response();
}
}
}
Dog.java:
package猫狗老鼠;
实验过程
一,相应的角色:
接收者:Television
命令:AbstractCommand
具体命令:TVChangeCommand,TVOpenCommand,TVCloseCommand
请求者:Controller
二,Uml类图:
三,相应的代码:
AbstractCommand.java
package电视机遥控器;
package电视机遥控器;
public class Controller {
private AbstractCommand openCommand,closeCommand,changeCommand;
相关主题