面向对象设计中有这样一个原则:
针对接口编程,而不是针对实现编程,也就是针对抽象编程。
我是这样理解它的,举个例子:
假设,现在要实现一个装动物的笼子,里面要放置一个狗。那么我们可以这样写代码:
狗的实现类 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。
算是自己对面向接口编程的一点体会吧~
分享到:
相关推荐
面向接口编程是一种重要的软件设计原则,它强调程序之间的交互应当基于接口而非具体的实现类。这一概念在面向对象编程(OOP)中占据了核心地位,尤其是对于构建可扩展、灵活和可维护的系统至关重要。以下是对面向...
面向接口编程是一种重要的软件设计原则,它强调程序的组件应通过接口进行交互,而不是直接依赖于具体的实现。这种编程范式有助于提高代码的灵活性、可维护性和可测试性。下面我们将详细探讨面向接口编程的思想基础、...
在Java编程语言中,"面向接口编程"是一种重要的设计原则,它强调了程序设计应以接口为中心,而非具体的实现类。这种编程范式有助于提高代码的可扩展性、可维护性和松耦合性。让我们通过生活中的实例和给定的类文件来...
面向接口编程(Programming to an interface)是一种软件设计原则,强调在设计和实现软件系统时,应该依赖于抽象而不是具体实现。这种编程方式鼓励开发者编写与特定实现无关的代码,而是与定义好的接口进行交互。...
面向接口编程(Interface Oriented Programming,IOP)是软件工程中一种重要的设计原则,尤其在面向对象编程(Object-Oriented Programming,OOP)领域内,它强调程序应该依赖于抽象而非具体实现。这种编程方式能够...
面向接口编程详解(二)——编程实例 面向接口编程是一种编程思想,强调通过接口来实现多态性和可扩展性。在本文中,我们将通过一个实例来详细解释面向接口编程的思想和优点。 问题提出:我们要开发一个应用,模拟...
综上所述,面向接口编程是Java和Android开发中的核心原则之一,它有助于构建可扩展、可维护的系统。了解并熟练掌握面向接口编程对于提升Android开发技能至关重要。在实践中,开发者应时刻思考如何通过接口来定义和...
面向接口编程是一种编程范式,它是面向对象编程(OOP)的一个重要组成部分,而非独立的编程思想。在面向接口编程中,我们关注的是定义清晰、明确的行为规范,而不是具体的实现细节。接口作为一种契约,规定了类必须...
面向接口编程是软件设计中的一个重要概念,它倡导的是在代码中使用接口而非具体的实现类来进行交互。这种编程方式能够提高代码的灵活性、可扩展性和可维护性,是面向对象编程中的核心原则之一。在Java、C#等面向对象...
面向接口编程是一种重要的软件设计原则,它强调程序应依赖于抽象接口,而非具体的实现细节。这一原则在现代软件工程中占据着核心地位,特别是在大型、复杂项目中,它有助于提高代码的灵活性、可维护性和可扩展性。...
在这个例子中,我们将深入探讨工厂模式的应用及其与面向接口编程的关系。 首先,工厂模式有三种主要的形式:简单工厂模式、工厂方法模式和抽象工厂模式。简单工厂模式中,有一个中心工厂类负责创建所有实例;工厂...
面向接口编程是面向对象编程中的一个重要概念,它并非与面向对象编程平级,而是面向对象思想的精华之一。本文将详细解释面向接口编程的思想基础。 首先,我们需要理解接口的定义和本质。接口在编程中是一个包含一...
另一方面,面向接口编程是一种重要的设计原则,它提倡在代码中使用接口而非具体实现。在Spring中,我们通常定义一个接口,然后创建其实现类。例如: ```java public interface ExampleService { void doSomething...
面向接口编程是一种重要的软件设计原则,它强调程序的组件应通过接口进行交互,而不是直接依赖于具体的实现。在本文档的第三部分,作者探讨了如何在实际的模式中运用这一原则,通过分析MVC(Model-View-Controller)...
面向接口编程是软件工程中的一种重要设计理念,尤其在面向对象编程中扮演着核心角色。它不仅深化了面向对象思想的应用,而且为构建更加灵活、可扩展和可维护的软件系统提供了理论依据。本文旨在深入探讨面向接口编程...
面向接口编程是一种设计原则,它强调程序应通过接口而不是具体实现进行交互。在Java中,这意味着我们定义接口,然后创建其实现类。这样做的好处包括: 1. **易扩展**:增加新的功能或修改现有功能,只需要实现新的...
面向接口编程是软件设计中的一个重要原则,特别是在C#这样的面向对象编程语言中。它强调了程序应依赖于接口,而不是具体的实现,这样可以提高代码的灵活性、可测试性和可维护性。在“c#数据库面向接口编程”项目中,...