主板在设计的时候,会预留PCI插槽,用来连接网卡、声卡、鼠标、键盘等硬件,用来扩展主板的功能。

如下图:

Java编程思想之-主板设计_Java

package 面向对象;

public class MainBoardDemo {

	/**
	 * @主板设计设计模式代码实现 
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		MainBoard mb = new MainBoard();		//创建主板实例
		mb.run();		//启动主板
		mb.usePCI(new NetWorkCard());	//连接网卡
		mb.usePCI(new SoundCard());		//连接声卡
	}

}

//主板类
class MainBoard
{
	public void run()	//开启主板
	{
		System.out.println("mainboard run");
	}
	public void usePCI(PCI 	p)	//利用多态来扩展功能
	{
		if(p!=null)
		{
			if(p instanceof NetWorkCard)
			{
				NetWorkCard nwc = (NetWorkCard)p;
				nwc.open();
				nwc.close();
			}else if(p instanceof SoundCard)
			{
				SoundCard sc = (SoundCard)p;
				sc.open();
				sc.close();
			}
		}
	}
}

//PCI接口,对外暴露原则 
interface PCI
{
	public abstract void open();	//打开硬件
	public abstract void close();	//关闭硬件
}

//网卡类
class NetWorkCard implements PCI
{
	public void open(){
		System.out.println("NetWorkCard run");
	}
	public void close(){
		System.out.println("NetWorkCard close");
	}
}

//声卡类
class SoundCard implements PCI
{
	public void open()
	{
		System.out.println("SoundCard fun");
	}
	public void close()
	{
		System.out.println("SoundCard close");
	}
}

程序运行结果如下图所示:

Java编程思想之-主板设计_编程思想_02

这个主板设计将多态、接口等知识点很自然的应用起来。所以继承、接口这些java的特性,也是java的精髓,需要仔细地去领会。


$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

接口的好处实例体现2:不同的数据库操作

package 面向对象;

public class OperateJDBC {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		User user = new User();
		DataDao dd = new D1();		//如果想改为另外一种数据库,直接将D1改成D2即可。
		dd.add(user);
		dd.delete(user);		
	}

}

interface DataDao	//不同的数据库都有添加与删除的功能,但是功能内容不一致,所以抽取为接口。
{
	public void add(User user);
	public void delete(User user);
}

class D1 implements DataDao	//数据库1
{
	public void add(User user)
	{
		//具体实现代码 
	}
	public void delete(User user)
	{
		//具体实现代码 
	}
}

class D2 implements DataDao	//数据库2
{
	public void add(User user)
	{
		//具体实现代码 
	}
	public void delete(User user)
	{
		//具体实现代码 
	}
}