多态运用实例

多态应用实例

/*
主板,主板可以插入网卡。

直接描述主板以及网卡,
并在主板中使用该网卡,
这样的设计虽然当然可以应用,但缺少扩展性。比如又来一个声卡该如何呢?难道要修改主板不成?

找这些事物的共性。

主板是为了扩展自己的功能,而是提高后期的可维护性。

先对这些板卡的共性进行抽取。
定义一个规则,这个规则出现的就可以降低主板和板卡直接的耦合性。

在描述主板的时候,可以预先使用该规则。


无论后期出现什么样的出现什么样的板卡,只要该板卡符合了这个规则,主板就可以使用这个板卡。



*/
interface PCI
{
	void open();
	void close();
}

class MainBoard
{
	void usePCI(PCI p)
	{
		p.open();
		p.close();
	}
}

class NetCard implements PCI
{
	public void open(){System.out.println("netCard open");}
	public void close(){System.out.println("netCard close");}
}



class SoundCard implements PCI
{
	public void open(){System.out.println("SoundCard open");}
	public void close(){System.out.println("SoundCard close");}
}


class  MainBoardDemo
{
	public static void main(String[] args) 
	{
		MainBoard mb = new MainBoard();
//		mb.usePCI(new NetCard());

		mb.usePCI(new SoundCard());
	}
}