主板在设计的时候,会预留PCI插槽,用来连接网卡、声卡、鼠标、键盘等硬件,用来扩展主板的功能。
如下图:
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的特性,也是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)
{
//具体实现代码
}
}
转载于:https://blog.51cto.com/4259297/1656220