程序补充

Matthewzhong 2011-09-18 01:23:31
1. 观察者模式


请根据以上类图填充完整下面的程式源码。
public interface Subject {
public void registerObserver (Observer o);
public void removeObserver (Observer o);
public void notifyObserver ();
}

public interface Observer{
Public void update (float temp, float humidity, float pressure);
}

public interface DisplayElement {
public void display () ;
}

public class WeatherData implement Subject{
private ArrayList observers;
private float temperature;
private float humidity;
private float pressure;
public WeatherData() {
Observers=new ArrayList();
}

public void registerObserver( Observer o) {
//有新的观察者加入时
……
}
public void notifyObservers() {
//状态更新时,通知各observer做状态的改变
……
}

public void measurementsChanged(){
//度量值发生变化时通知observer
……
}

public void setMeasurements(float temperature, float humidity, float pressure){
this.temoreature=temperature;
this.hunidity=humidity;
this.pressure=pressure;
measurementsChanged();
}
……
}
2. 责任链模式
责任链模式涉及到的角色


责任链模式的实现


抽象处理者(Handler)角色:定义出一个处理请求的接口。如果需要,接口可以定义出一个方法,以设定和返回对下家的引用。这个角色通常由一个抽象类或接口实现。具体处理者(ConcreteHandler)角色:具体处理者接到请求后,可以选择将请求处理掉,或者将请求传给下家。由于具体处理者持有对下家的引用,因此,如果需要,具体处理者可以访问下家。
根据上面类图补充完整下面程序源码。具体处理者处理逻辑如下:
若request大于等于 0且小于10,则由ConcreteHandler1处理;
若request大于等于10且小于20,则由ConcreteHandler2处理;
若request大于等于20且小与30,则由ConcreteHandler3处理;
using System;
// "Handler"
abstract class Handler
{ // Fields
protected Handler successor;
// Methods
public void SetSuccessor( Handler successor )
{
this.successor = successor;
}
abstract public void HandleRequest( int request );
}

// "ConcreteHandler1"
class ConcreteHandler1 : Handler
{
// Methods
……
}

// "ConcreteHandler2"
class ConcreteHandler2 : Handler
{
// Methods
……
}
// "ConcreteHandler3"
class ConcreteHandler3 : Handler
{
// Methods
……
override public void HandleRequest( int request )
{
……
}
}
/// Client test
public class Client
{
public static void Main( string[] args )
{
// Setup Chain of Responsibility
……
……
// Generate and process request
int[] requests = { 2, 5, 14, 22, 18, 3, 27, 20 };
foreach( int request in requests )
h1.HandleRequest( request );
}
}
...全文
54 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
随风醉舞 2011-10-10
回复
funnyone 2011-10-10
库中不时有observer 和obserable 接口吗,继承好了
回复
具体问题
回复
gentleboy2009 2011-09-18
最好说出你的具体问题~~~别上来就贴代码……这样怎么能进步呢?

楼下的 为了帮助楼主,希望都别正面回答楼主,别直接贴代码!
回复
gentleboy2009 2011-09-18
自己写么!!!又不难
回复
Matthewzhong 2011-09-18
重新在本论坛上传插入,见谅。
回复
Matthewzhong 2011-09-18
QQ还真是。。。空间地址:http://user.qzone.qq.com/24435750

截图在空间里,好像是个日志之类的吧,我也不怎么用空间,标题为:.....

截图3个,论坛中引用的第一个图片为截图3

第二个图片为截图2

第三个图片为截图1
回复
Matthewzhong 2011-09-18
题目补充:可否在补充处用其他颜色标识?
回复
相关推荐
发帖
非技术区
创建于2007-09-28

2.3w+

社区成员

Java 非技术区
申请成为版主
帖子事件
创建了帖子
2011-09-18 01:23
社区公告
暂无公告