Java 依赖于抽象。不要依赖于具体的类别
当我在读《工厂》的时候,我把工厂的设计模式抽象为头先设计模式 书。它提到了这个短语Java 依赖于抽象。不要依赖于具体的类别,java,oop,design-patterns,Java,Oop,Design Patterns,当我在读《工厂》的时候,我把工厂的设计模式抽象为头先设计模式 书。它提到了这个短语 你能给出一个基本的例子和解释来澄清它吗。因为工厂是虚拟的建设者。它们使您能够在运行时返回不同的类型。工厂依赖于多态性 如果返回具体类型,则不能执行任何此类操作 public interface IFoo { void execute(); } public class Bar implements IFoo { public void execute() { System.out.println
你能给出一个基本的例子和解释来澄清它吗。因为工厂是虚拟的建设者。它们使您能够在运行时返回不同的类型。工厂依赖于多态性 如果返回具体类型,则不能执行任何此类操作
public interface IFoo {
void execute();
}
public class Bar implements IFoo {
public void execute() { System.out.println("Bar does one thing"); }
}
public class Baz implements IFoo {
public void execute() { System.out.println("Baz does another"); }
}
public class FooFactory {
private static final FooFactory instance = new FooFactory();
private FooFactory() {}
public static final FooFactory getInstance() { return instance; }
public IFoo create(Class clazz) {
return clazz.newInstance();
}
}
显然,如果从create方法返回
条
,则Baz
是不可能的,反之亦然。接口是关键。依赖于抽象可能有助于实现类之间的松散耦合。这就是为什么建议这样做。想一想一个例子Animal
class。如果您可以在定义时保留许多抽象,那么当您定义更具体的类时,例如Dog
和Bird
,您将有更大的灵活性。如果您将狗
的一个具体特性放在动物
中,那么当您尝试编写鸟
扩展动物
时,您将遇到冲突。因此,总是将事物抽象到类层次结构的上层。依赖倒置原则;五个人中的一个。查看此问题的答案;-那里有一些非常好的信息
在传统的应用程序体系结构中,较低级别的组件被设计为供较高级别的组件使用,从而能够构建越来越复杂的系统。在这种组合中,高级组件直接依赖于低级组件来完成某些任务。这种对低级组件的依赖限制了高级组件的重用机会
用“简单”的术语来说,这意味着当你依赖一个对象的具体实例时——你正在为你的代码建立一个依赖关系(尽管没有这个意图),这就限制了重用它的能力
记住,具体类型是可以实例化的类类型,抽象类型是不能实例化的类型;i、 创建一个接口。(见附件)
如果您编码到一个特定的具体类,那么您将始终拥有该类的需求。但是,如果您将代码编写到一个接口(抽象),那么就可以调整代码以处理任意数量的类;只要他们实现了公共接口
因此,在Java中,这意味着在可能的情况下,您应该对接口进行编码,并避免使代码依赖于特定的项。这通常与传递接口
类型作为参数和返回类型一样简单;而不是具体的类
依赖关系越少=重用代码的能力越强。
更多依赖项=能够重用代码的需求更多
当你学习设计模式时,这将是一个反复出现的主题强>
在维基百科上。这与“编程到接口,而不是实现”的概念相同。我说的对吗@Fergus