主板在设计的时候,会预留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) { //具体实现代码 } }