`
wnzz95391511
  • 浏览: 126792 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

设计原则之面向接口编程

阅读更多
面向对象设计中有这样一个原则:
针对接口编程,而不是针对实现编程,也就是针对抽象编程。

我是这样理解它的,举个例子:

假设,现在要实现一个装动物的笼子,里面要放置一个狗。那么我们可以这样写代码:
狗的实现类 Dog.java
public class Dog{
    public void talk(){
        System.out.println("Dog talk");
    }
}


笼子的实现类 Cage.java
public class Cage{
    private Dog dog;

    public Cage(Dog dog){
        this.dog = dog;
    }

    public void talk(){
        this.dog.talk();
    } 
}

客户端代码 Client.java
public class Client{

     public static void main(String[] args){
            Dog dog = new Dog();
            //向笼子里加入狗
            Cage cage = new Cage(dog);

            //笼子里的动物说话
            cage.talk();
     }

}


这样的话,针对这个需求,我们很完美的完工了!实现了所需要的功能。
但是如果现在需求变了呢,想向笼子里加上一只猫,而不是一只狗。
从直观的角度考虑,我们就是更改Cage类中定义的Dog对象,将其全都换成Cat对象。
换个角度,将Dog 和 Cat 抽象出共用的接口,用于复用。

新改变的代码如下:
新定义的 动物接口 Animal.java
public interface Animal{

      public void talk();
}


定义Cat类,实现此接口   Cat.java
public class Cat implements Animal{
    
     public void talk(){
         System.out.println("Cat talk");
     }

}

Dog类也改为实现Animal接口,这里就不再写出了
Cage类更改如下
public class Cage{
    private Animal animal;

    public Cage(Animal animal){
        this.animal = animal;
    }

    public void talk(){
        this.animal.talk();
    } 
}


这样,就可以在客户端实现将Cat或Dog加入到笼子里了
public class Client{

     public static void main(String[] args){
            Dog dog = new Dog();
            Cat cat = new Cat();
            //向笼子里加入狗
            //Cage cage = new Cage(dog);
            //或向笼子里加入猫
            Cage cage = new Cage(cat);
            
            //笼子里的动物说话
            cage.talk();
     }
}


这样就可以实现了代码的复用,以后再改需求,加入别的动物,对于Cage也可以不需要进行改变。
  • 利用第一种形式定义Cage,即是面向实现编程,是在编译时确定笼子与具体动物的关系。
  • 利用第二种形式定义Cage,抽象出Animal,即是面向接口编程,是在运行时确定笼子与具体动物的关系。当在客户端运行时加入Dog,则笼子里放入的是Dog,当在客户端运行时加入Cat,则笼子里放入的是Cat。


算是自己对面向接口编程的一点体会吧~
0
0
分享到:
评论

相关推荐

    面向接口编程。面向接口编程。

    面向接口编程是一种重要的软件设计原则,它强调程序之间的交互应当基于接口而非具体的实现类。这一概念在面向对象编程(OOP)中占据了核心地位,尤其是对于构建可扩展、灵活和可维护的系统至关重要。以下是对面向...

    面向接口编程详解

    面向接口编程是一种重要的软件设计原则,它强调程序的组件应通过接口进行交互,而不是直接依赖于具体的实现。这种编程范式有助于提高代码的灵活性、可维护性和可测试性。下面我们将详细探讨面向接口编程的思想基础、...

    java面向接口编程

    在Java编程语言中,"面向接口编程"是一种重要的设计原则,它强调了程序设计应以接口为中心,而非具体的实现类。这种编程范式有助于提高代码的可扩展性、可维护性和松耦合性。让我们通过生活中的实例和给定的类文件来...

    Java语言:什么叫面向接口编程

    面向接口编程(Programming to an interface)是一种软件设计原则,强调在设计和实现软件系统时,应该依赖于抽象而不是具体实现。这种编程方式鼓励开发者编写与特定实现无关的代码,而是与定义好的接口进行交互。...

    面向接口编程(经典但无实例)

    面向接口编程(Interface Oriented Programming,IOP)是软件工程中一种重要的设计原则,尤其在面向对象编程(Object-Oriented Programming,OOP)领域内,它强调程序应该依赖于抽象而非具体实现。这种编程方式能够...

    面向接口编程详解(二)——编程实例.doc

    面向接口编程详解(二)——编程实例 面向接口编程是一种编程思想,强调通过接口来实现多态性和可扩展性。在本文中,我们将通过一个实例来详细解释面向接口编程的思想和优点。 问题提出:我们要开发一个应用,模拟...

    面向接口编程理解demo

    综上所述,面向接口编程是Java和Android开发中的核心原则之一,它有助于构建可扩展、可维护的系统。了解并熟练掌握面向接口编程对于提升Android开发技能至关重要。在实践中,开发者应时刻思考如何通过接口来定义和...

    面向接口编程详解——思想基础

    面向接口编程是一种编程范式,它是面向对象编程(OOP)的一个重要组成部分,而非独立的编程思想。在面向接口编程中,我们关注的是定义清晰、明确的行为规范,而不是具体的实现细节。接口作为一种契约,规定了类必须...

    面向接口编程

    面向接口编程是软件设计中的一个重要概念,它倡导的是在代码中使用接口而非具体的实现类来进行交互。这种编程方式能够提高代码的灵活性、可扩展性和可维护性,是面向对象编程中的核心原则之一。在Java、C#等面向对象...

    面向接口编程而不是面向实现编程

    面向接口编程是一种重要的软件设计原则,它强调程序应依赖于抽象接口,而非具体的实现细节。这一原则在现代软件工程中占据着核心地位,特别是在大型、复杂项目中,它有助于提高代码的灵活性、可维护性和可扩展性。...

    工厂模式与面向接口编程例子

    在这个例子中,我们将深入探讨工厂模式的应用及其与面向接口编程的关系。 首先,工厂模式有三种主要的形式:简单工厂模式、工厂方法模式和抽象工厂模式。简单工厂模式中,有一个中心工厂类负责创建所有实例;工厂...

    面向接口编程详解(一)——思想基础.doc

    面向接口编程是面向对象编程中的一个重要概念,它并非与面向对象编程平级,而是面向对象思想的精华之一。本文将详细解释面向接口编程的思想基础。 首先,我们需要理解接口的定义和本质。接口在编程中是一个包含一...

    Spring_依赖注入_面向接口编程_不同加载方式

    另一方面,面向接口编程是一种重要的设计原则,它提倡在代码中使用接口而非具体实现。在Spring中,我们通常定义一个接口,然后创建其实现类。例如: ```java public interface ExampleService { void doSomething...

    面向接口编程详解(三)——模式研究.doc

    面向接口编程是一种重要的软件设计原则,它强调程序的组件应通过接口进行交互,而不是直接依赖于具体的实现。在本文档的第三部分,作者探讨了如何在实际的模式中运用这一原则,通过分析MVC(Model-View-Controller)...

    面向接口详解

    面向接口编程是软件工程中的一种重要设计理念,尤其在面向对象编程中扮演着核心角色。它不仅深化了面向对象思想的应用,而且为构建更加灵活、可扩展和可维护的软件系统提供了理论依据。本文旨在深入探讨面向接口编程...

    Spring_依赖注入_面向接口编程

    面向接口编程是一种设计原则,它强调程序应通过接口而不是具体实现进行交互。在Java中,这意味着我们定义接口,然后创建其实现类。这样做的好处包括: 1. **易扩展**:增加新的功能或修改现有功能,只需要实现新的...

    c#数据库面向接口编程

    面向接口编程是软件设计中的一个重要原则,特别是在C#这样的面向对象编程语言中。它强调了程序应依赖于接口,而不是具体的实现,这样可以提高代码的灵活性、可测试性和可维护性。在“c#数据库面向接口编程”项目中,...

Global site tag (gtag.js) - Google Analytics