程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。(C#语言)
要求: 1.要有联动性,老鼠和主人的行为是被动的。
2.考虑可扩展性,猫的叫声可能引起其他联动效应。
要点:1. 联动效果,运行代码只要执行Cat.Cryed()方法。
2. 对老鼠和主人进行抽象
评分标准:
<1>.构造出Cat、Mouse、Master三个类,并能使程序运行(2分)
<2>从Mouse和Master中提取抽象(5分)
<3>联动效应,只要执行Cat.Cryed()就可以使老鼠逃跑,主人惊醒。(3分)
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();
}
}
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和Android开发中。它是一种编程范式,强调程序应通过其公开的接口与其消费者进行交互,而不是直接依赖于其实现细节。这样的设计提高了代码的可扩展性、可维护...
面向接口编程是一种重要的软件设计原则,它强调程序应依赖...通过学习和实践这些例子,你可以更好地理解面向接口编程的精髓,提升自己的编程技能。在实际项目中应用这些原则,可以使代码结构更加清晰,易于理解和扩展。
在这个例子中,我们将深入探讨工厂模式的应用及其与面向接口编程的关系。 首先,工厂模式有三种主要的形式:简单工厂模式、工厂方法模式和抽象工厂模式。简单工厂模式中,有一个中心工厂类负责创建所有实例;工厂...
在文章中,作者使用了一个建筑工程师的例子来解释面向接口编程的思想。建筑工程师首先需要进行整体项目的构思,结果就是一份很完美的建筑图纸。这个图纸就是一个大的接口,规定了建筑工程师需要遵守的硬性条件。然后...
面向接口编程是Spring推崇的设计原则之一,它强调将实现细节隐藏在接口背后,从而降低了模块间的耦合。通过定义接口,客户端代码只需要与接口交互,而不直接依赖具体实现。这样,当需要更换实现时,只需修改配置,而...
在这个“面向接口的反射例子”中,我们将深入探讨ASP.NET中的两个关键概念:面向接口编程和反射。 首先,面向接口编程(Interface-Oriented Programming, IOP)是面向对象编程的一种策略,它强调设计和实现时以接口...
在这个“面向对象编程例子1”中,我们可以推测作者可能创建了一些类,比如一个基类(可能是抽象类或接口),然后定义了几个继承自该基类的子类。每个子类可能具有自己的特性和行为,展示了多态性的概念。同时,通过...
Java面向接口编程之简单工厂模式示例 本文档主要介绍了Java面向接口编程之简单工厂模式的概念和实现,以及如何使用简单工厂模式来实现不同的打印机功能。下面是对标题、描述、标签和部分内容的分析和知识点总结: ...
Mybatis 是一款流行的持久层框架,它允许开发者将 SQL 查询与 Java 代码分离,从而实现更灵活的数据访问。在 Mybatis 中,面向接口编程是一种重要...通过面向接口编程,Mybatis 成为了一个强大且灵活的持久层解决方案。
在Java编程中,接口(Interface)是一种非常重要的概念,它为多态性提供了基础,促进了模块间的解耦,使得代码更加灵活和易于扩展。...这种实践对于提升编程技能,尤其是理解面向接口编程的重要性,是非常有价值的。
面向接口编程的核心思想是,我们在编写代码时,关注的是对象能够做什么(即接口),而不是它具体是如何做的(即实现)。这样,我们可以将实现细节与接口分离,使得系统更容易进行模块化设计。当需要改变或添加功能时...
在这个例子中,"门禁系统"可能被用作一个实际场景,帮助我们深入理解面向对象的核心概念。 首先,门禁系统可以被视为一个类(Class),这个类包含了多个对象(Objects)。在现实世界中,每个门禁点都是一个独立的...
### 面向接口编程与Java接口、抽象类的选择 #### 一、接口与抽象类的概念 在面向对象编程中,接口(Interface)与抽象类(Abstract Class)都是用来实现多态性的工具,它们允许开发者定义行为规范而不指定具体实现...
本文通过MATLAB语言实现了一个典型的面向对象技术应用,使用的例子涉及MATLAB 7.6版本(属于2008a版本的一部分)的功能。 面向对象编程允许我们设计可以描述各种实体的类别,这些实体包括物理对象(如汽车或有机体...
《C++面向对象编程实例大全》是一本专为初级学习者设计的教程,旨在通过丰富的实例深入浅出地讲解C++的面向对象编程概念。面向对象编程(Object-Oriented Programming,简称OOP)是C++的核心特性,也是现代软件开发...
面向接口编程则是另一种核心原则,它提倡设计时定义抽象接口,而具体的实现则由依赖的类提供。这两者在Spring Boot中的结合,使得应用程序更加灵活和可扩展。 控制反转在Spring框架中主要通过依赖注入(Dependency ...
Java面向对象程序设计是计算机科学中的一个重要领域,它基于面向对象编程(OOP)的理念,强调将现实世界的问题抽象为类和对象,从而更高效、更直观地进行软件开发。这个压缩包包含了一系列的Java源代码示例,由...
面向对象编程(Object-Oriented Programming,简称OOP)是PHP中的一个重要概念,它使得代码更加结构化、可维护和可扩展。在这个“php简单面向对象的网站例子”中,我们将探讨如何在PHP中实现面向对象的基本原理,...