• 针对接口编程能帮助达到面向对象开发和设计中"低耦合"的要求. 某公司...打印机...(笔试中遇到的题目)


    针对接口编程能帮助达到面向对象开发和设计中"低耦合"的要求.   
          举个例子:某公司有一台特殊打印机,还可以使用一年,一年后可能换为另一种打印机,这两种打印机都特殊而贵.所以现在的程序希望换了打印机后也少量修改就可用.   
        方法:   
        1,定义一个打印机接口.   
        2,定义打印机类A,B,分别实现此接口.   
        3,定义一个工厂类,在类中可选择返回由A实现的接口,或者由B实现的接口.   
        4,在程序中使用打印机时,就可以使用工厂类来调用打印机,而不需要知道具体的是什么打印机.   
            如果打印机换了,只需要修改工厂类就行了.如果有一千个地方都调用过打印机,就不需要一个一个修改.修改一个地方就行了.接口充当一个隔离层的作用.   


        代码如下:

          private   void     button1_Click(object     sender,EventArgs     e){  
            PrintFactory     myFactory=new     PrintFactory();  
            Iprint     myPrint=myFactory.CreatePrint("PrintA");  
            myPrint.PrintData("这样做很方便啊");  
        }   

    请编写步骤1,2,3,中所述的接口IPrint,类PrintA,类PrintB,类PrintFactory。

    //定义打印机接口  
      interface     Iprint{  
          bool     PrintData(string     data);  
        }  
       
      //定义打印机类A,实现接口  
      class     PrintA:Iprint{  
          public   virtual   bool     PrintData(string     data){  
              //具体业务逻辑略  
            }  
        }  
       
        定义打印机类B,实现接口  
      class     PrintB:Iprint{  
          public   virtual   bool     PrintData(string     data){  
              //具体业务逻辑略  
            }  
        }  
       
      //定义工厂类  
      class     PrintFactory{  
          public     Iprint     CreatePrint(){  
            //返回一个由打机类A,或B实现的接口,比如  
              return   new     PrintA();  
            }  
        }  
       
      //通过工厂类,调用打印机  
      private   void     button1_Click(object     sender,EventArgs     e){  
            PrintFactory     myFactory=new     PrintFactory();  
            Iprint     myPrint=myFactory.CreatePrint();  
            myPrint.PrintData("这样做很方便啊");  
        }   

  • 相关阅读:
    SystemTap----常用变量、宏、函数和技巧
    RPM制作
    percona-MYSQLGUI监控
    Rsyslog配置文件详解
    理解 Linux 网络栈(1):Linux 网络协议栈简单总结 图
    tcp-backlog配置
    Clumsy logo差网络环境模拟工具 Clumsy
    Android Studio 配置模拟器AVD存放路径(默认在c盘,解决c盘空间不够问题)
    Android Studio 导入的项目编码错误问题
    21分钟 MySQL 入门教程
  • 原文地址:https://www.cnblogs.com/LinWenQiang/p/11789816.html
Copyright © 2020-2023  润新知