我是靠谱客的博主 幸福乌冬面,最近开发中收集的这篇文章主要介绍java 设计模式笔试题_一道java关于设计模式笔试题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目:猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒

要求:1。要有联动性,老鼠和主人的行为是被动的

2。考虑可扩展性,猫的叫声可能引起其他联动效应

两种方法

1   使用观察者模式

public   interface   Observer

{

void   Response();         //观察者的响应,如是老鼠见到猫的反映

}

public   interface   Subject

{

void   AimAt(Observer   obs);     //针对哪些观察者,这里指猫的要扑捉的对象---老鼠

}

public   class   Mouse   :   Observer

{

private   string   name;

public   Mouse(string   name,   Subject   subj)

{

this.name   =   name;

subj.AimAt(this);

}

public   void   Response()

{

Console.WriteLine(name   +   "   attempt   to   escape!");

}

}

public   class   Master   :   Observer

{

public   Master(Subject   subj)

{

subj.AimAt(this);

}

public   void   Response()

{

Console.WriteLine("Host   waken!");

}

}

public   class   Cat   :   Subject

{

private   ArrayList   observers;

public   Cat()

{

this.observers   =   new   ArrayList();

}

public   void   AimAt(Observer   obs)

{

this.observers.Add(obs);

}

public   void   Cry()

{

Console.WriteLine("Cat   cryed!");

foreach   (Observer   obs   in   this.observers)

{

obs.Response();

}

}

}

class   MainClass

{

static   void   Main(string[]   args)

{

Cat   cat   =   new   Cat();

Mouse   mouse1   =   new   Mouse("mouse1",   cat);

Mouse   mouse2   =   new   Mouse("mouse2",   cat);

Master   master   =   new   Master(cat);

cat.Cry();

}

}

2   使用事件

public   delegate   void   SubEventHandler();

public   abstract   class   Subject

{

public   event   SubEventHandler   SubEvent;

protected   void   FireAway()

{

if   (this.SubEvent   !=   null)

this.SubEvent();

}

}

public   class   Cat   :   Subject

{

public   void   Cry()

{

Console.WriteLine("cat   cryed.");

this.FireAway();

}

}

public   abstract   class   Observer

{

public   Observer(Subject   sub)

{

sub.SubEvent   +=   new   SubEventHandler(Response);

}

public   abstract   void   Response();

}

public   class   Mouse   :   Observer

{

private   string   name;

public   Mouse(string   name,   Subject   sub)   :   base(sub)

{

this.name   =   name;

}

public   override   void   Response()

{

Console.WriteLine(name   +   "   attempt   to   escape!");

}

}

public   class   Master   :   Observer

{

public   Master(Subject   sub)   :   base(sub){}

public   override   void   Response()

{

Console.WriteLine("host   waken");

}

}

class   Class1

{

static   void   Main(string[]   args)

{

Cat   cat   =   new   Cat();

Mouse   mouse1   =   new   Mouse("mouse1",   cat);

Mouse   mouse2   =   new   Mouse("mouse2",   cat);

Master   master   =   new   Master(cat);

cat.Cry();

}

}

最后

以上就是幸福乌冬面为你收集整理的java 设计模式笔试题_一道java关于设计模式笔试题的全部内容,希望文章能够帮你解决java 设计模式笔试题_一道java关于设计模式笔试题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部