03-04面向对象设计原则_设计实验

设计实验

有 3 个开关:a
b c

有 3 个电灯:x y z

要求实现:

a 能控制 x

b 能控制 x, y

c 能 x

注意:1个灯泡可以被多个开关控制;1个开关可以同时控制多个灯泡

所谓“控制”:当开关操作时,当前灯泡的状态发生翻转。亮->灭 或 灭->亮

import java.util.*; 

class Light
{
	private boolean state;  // 灯的状态。true: 亮

	public String toString()
	{
		if(state)
			return "亮";
		else
			return "灭";
	}

	// 翻转状态
	public void change()
	{
		state = !state;
	}
}

class Switch
{
	//Light[] a = ...
	Vector v = new Vector();

	public void addLight(Light x)
	{
		v.add(x);
	}

	// 按了一下开关
	public void press()
	{
		for(int i=0; i<v.size(); i++)
		{
			Light p = (Light)v.get(i);
			p.change();  // 反转电灯的当前状态
		}
	}
}

public class MyTest
{
	private static void show_light(Light x, Light y, Light z)
	{
		System.out.println(x + "," + y + "," + z);
		System.out.println("-----------------------");
	}

	public static void main(String[] args)
	{
		Light x = new Light();
		Light y = new Light();
		Light z = new Light();

		Switch a = new Switch();
		Switch b = new Switch();
		Switch c = new Switch();

		a.addLight(x);
		b.addLight(x);
		b.addLight(y);
		c.addLight(x);

		show_light(x, y, z);

		a.press();
		show_light(x, y, z);

		b.press();
		show_light(x, y, z);

		c.press();
		show_light(x, y, z);

	}
}

03-04面向对象设计原则_设计实验

时间: 2024-10-10 14:04:29

03-04面向对象设计原则_设计实验的相关文章

老调重弹--面向对象设计原则--包设计原则

前言 在计算机编程中,包设计原则作为一种方式在大型系统中组织类使系统更加有组织和可管理,它指导我们让我们明确哪个类应该放在哪个包里面(包的内聚原则),以及包与包之间如何互相关联的关系(包的耦合原则) 包的内聚原则 重用等价发布原则(Reuse-release equivalence principle,REP) 包必须和可复用的类一起创建 类的粒度等价于包的粒度 重用的粒度就是发布的粒度 要么类全部包含在包里,要么全部不包含在包里 共同重用原则(Common-reuse Principle,CR

OO设计原则 -- OO设计的原则及设计过程的全面总结

这部分增加一点自己的感想,OO设计原则下面讲述的很清晰;看完之后有点感想如果我们在实际开发当中能够把这些原则熟烂于心的话那我们的代码质量和个人能力会有很显著的提神.根据自己的实际经验看很多开发者在开发过程中很多基本的知识确实没有熟烂于心导致开发的时候只有基本的内容.我所在的项目就是代码接口各种乱,可读性和可维护性特别差:当然自己在开发的时候也都没有做到,在后面的工作中尽量避免 前面发表了5篇OO设计原则的文章,在这里我将这个5个原则如何在我们设计过程进行应用进行一下总结, 这是我通过阅读和学习很

01设计原则--七大设计原则

设计原则 定义 使用频率 单一职责原则 一个类只负责一个功能领域中的相应职责 ★★★★ 开闭原则 软件实体应对扩展开放,而对修改关闭 ★★★★★ 里氏代换原则 所有引用基类对象的地方能够透明地使用其子类的对象 ★★★★★ 依赖倒转原则 抽象不应依赖于细节,细节应该依赖于抽象 ★★★★★ 接口隔离原则 使用多个专门的接口,而不使用单一的总接口 ★★ 合成复用原则 尽量使用对象组合,而不是继承来达到复用的目的 ★★★★ 迪米特法则 一个软件实体应当尽可能少地与其他实体发生相互作用 ★★★

浅析交互设计原则:设计应以人为本

为什么需要计原则? 设计原则其实就是对一些设计过程中基于人类的认知规律对设计做出的一些指导性原则,并且对已经成为行业共识的设计经验做个总结,用来指导设计师界定问题.提高效率. 经常用的设计原则有哪些? 先来抛一个老D在早年刚接触交互设计的时候最为大家所认可的几条设计原则: 1.可学习性 目标用户在已有的知识和经验基础上,能正确理解产品界面,无需要思考而一目了然:或者是用户通过自己的学习,借助提示或帮助说明,能够理解产品界面.则界面具有了可学习性. 可学习的内容包括:明确当前所在位置,知道当前能干

老调重弹--面向对象设计原则--GRASP设计原则

GRASP概述 GRASP,全称General Responsibility Assignment Software Patterns,译为”通用职责分配软件原则“,包含以下原则和模式 控制器(Controller) 控制器模式用来接收和处理系统事件的职责,一般应该分配给一个能够代表整个系统或者单个用例场景 一个用例控制器应该用来处理一个用例的所有系统事件 控制器对象定义为UI展现层之上的第一个对象负责接收和协调系统操作 控制器本身不应该包含太多逻辑和功能 在N-Layer多层架构应用程序中,控

面向对象五大原则_基石_开闭原则

1988年,勃兰特·梅耶(Bertrand Meyer)在他的著作<面向对象软件构造(Object Oriented Software Construction)>中提出了开闭原则,它的原文是这样:"Software entities should be open for extension,but closed for modification". 翻译过来就是:"软件实体应当对扩展开放.对改动关闭". 这句话说得稍微有点专业,我们把它讲得更通俗一点,

day03_面向对象五大原则_基石_开闭原则

1988年,勃兰特·梅耶(Bertrand Meyer)在他的著作<面向对象软件构造(Object Oriented Software Construction)>中提出了开闭原则,它的原文是这样:"Software entities should be open for extension,but closed for modification".翻译过来就是:"软件实体应当对扩展开放,对修改关闭".这句话说得略微有点专业,我们把它讲得更通俗一点,也就

第二章 【面向对象设计原则】

(一)如何衡量软件设计的质量 内聚度: 表示一个应用程序的单个单元所负责的任务数量和多样性.内聚与单个类或者单个方法单元相关.(好的软件设计应该做到高内聚.) 耦合度: 耦合度表示类之间关系的紧密程度.低耦合是指尽量使用抽象耦合,少用具体耦合. 设计原则名称 设计原则简介 重要性 单一职责原则 的职责要单一,不能将太多的职责放在一个类中. ★★★★☆ 开闭原则 软件实体对扩展是开放的,但对修改是关闭的,即在不修改一个软件实体的基础上去扩展其功能.  ★★★★★ 历史替换原则 在软件系统中,一个可

(转载)Java程序员应当知道的10个面向对象设计原则

面向对象设计原则是OOPS编程的核心, 但我见过的大多数Java程序员热心于像Singleton (单例) . Decorator(装饰器).Observer(观察者) 等设计模式,而没有把足够多的注意力放在学习面向对象的分析和设计上面.学习面向对象编程像"抽象"."封装"."多态"."继承" 等基础知识是重要的,但同时为了创建简洁.模块化的设计,了解这些设计原则也同等重要.我经常看到不同经验水平的java程序员,他们有的不知