由于Java 8允许在名为Default Methods的接口中默认实现方法,因此在何时使用a之间似乎存在混淆abstract class.
那么什么时候应该使用与默认方法的接口,何时应该使用抽象类?抽象类在这种情况下仍然有用吗?
工厂和抽象工厂模式之间的基本区别是什么?
在我的一次访谈中,我被要求解释Interface和Abstract类之间的区别.
这是我的回答:
Java接口的方法是隐式抽象的,不能有实现.Java抽象类可以具有实现默认行为的实例方法.
在Java接口中声明的变量默认为final.抽象类可能包含非最终变量.
默认情况下,Java接口的成员是公共的.Java抽象类可以具有类似私有,受保护等类通常的类成员.
应使用关键字"implements"实现Java接口; 应使用关键字"extends"扩展Java抽象类.
接口只能扩展另一个Java接口,抽象类可以扩展另一个Java类并实现多个Java接口.
Java类可以实现多个接口,但它只能扩展一个抽象类.
然而,面试官并不满意,并告诉我这个描述代表了" 书本知识 ".
他告诉我一个更实际的回答,解释我何时会使用实际例子在界面上选择一个抽象类.
我哪里做错了?
这可能是一个通用的OOP问题.我想根据它们的用法在接口和抽象类之间进行一般性比较.
什么时候想要使用接口?何时想要使用抽象类?
我正在从网站上阅读设计模式
在那里我读到了有关工厂,工厂方法和抽象工厂的信息,但它们很混乱,我对定义并不清楚.根据定义
Factory - 创建对象而不将实例化逻辑暴露给客户端,并通过公共接口引用新创建的对象.是Factory Method的简化版本
工厂方法 - 定义用于创建对象的接口,但让子类决定实例化哪个类,并通过公共接口引用新创建的对象.
抽象工厂 - 提供用于创建相关对象族的界面,而无需明确指定其类.
我还查看了关于抽象工厂与工厂方法的其他stackoverflow线程,但是那里绘制的UML图使我的理解更加糟糕.
有谁能告诉我
java language-agnostic design-patterns factory factory-method
我试图简洁地描述何时使用工厂,我自己和我的团队.我遇到了以下相关问题,这有点帮助:
基于这些链接以及一系列其他来源(在下面列出),我提出了以下内容:
何时使用抽象工厂模式:
说明:
"我是否为每种对象类型创建了一个工厂?这看起来过分了."
何时不使用工厂:
参考文献:
我的问题是:我的摘要是否准确,是否有意义?有什么我忽略的吗?
提前致谢.
language-agnostic oop design-patterns factory factory-pattern
我是单元测试和PHPUnit的新手,但我最近读了很多关于设计模式和隔离测试的内容,我决定重构一个我正在努力摆脱静态类,单例,硬编码依赖项的应用程序.在全球范围内定义的任何其他内容,希望使其"可测试",而不是在未来保持屁股的痛苦,因为它本来是一个长期项目.
到目前为止,我相信我理解单元测试背后的理论,但我想知道,在一个委托处理对象的嵌套依赖关系到一个工厂的场景中,应该如何进行单元测试所述工厂,或者它是多余的来测试它?什么是测试依赖关系"链"同步工作的最佳方法?
让我来说明问题.假设您有以下"遗留"代码:
class House {
protected $material;
protected $door;
protected $knob;
public function __construct() {
$this->door = new Door();
$this->knob = $this->door->getKnob();
$this->material = "stone";
echo "House material: ".$this->material . PHP_EOL . "<br/>";
echo "Door material: ".$this->door->getMaterial() . PHP_EOL . "<br/>";
echo "Knob material: ".$this->knob->getMaterial() . PHP_EOL . "<br/>";
}
}
class Door {
protected $material;
protected $knob;
public function __construct() {
$this->knob = new Knob();
$this->material = "wood";
}
public function getKnob() {
return $this->knob;
}
public function …Run Code Online (Sandbox Code Playgroud) 虽然我知道什么是工厂设计模式.但我无法理解使用它有什么好处.我们为什么要使用Factory Design Pattern创建对象.
我正在尝试用Java创建一个非常简单的Factory Method设计模式示例.我真的不懂Java,我不熟悉编程,但我需要提出一个在java中实现的基本FactoryMethod示例.以下是我提出的建议.我确定有很多错误,我显然缺少一些构造函数,而且我对抽象类和接口感到困惑.你能指出我的错误并纠正我的代码以及解释吗?提前感谢您的时间和帮助.
public abstract class Person
{
public void createPerson(){ }
}
public class Male extends Person
{
@Override
public void createPerson()
{
System.out.print("a man has been created");
}
}
public class Female extends Person
{
@Override
public void createPerson()
{
System.out.print("a woman has been created");
}
}
public class PersonFactory
{
public static Person makePerson(String x) // I have no Person constructor in
{ // the actual abstract person class so
if(x=="male") // is this valid here?
{
Male …Run Code Online (Sandbox Code Playgroud) 我正在浏览Java代码,我看到已经使用某个接口分配了对象,并且此接口包含一些使用newoperator 分配对象的方法.我无法想到他们为什么使用接口而不是直接使用new运算符分配对象.例如:
Animal animal = new Animal();
Run Code Online (Sandbox Code Playgroud)
要么
Animal animal = interface.allocateAnimal()
Run Code Online (Sandbox Code Playgroud)
这interface是一个界面,它有一个allocateAnimal什么都不做
的方法new Animal().
所以最终我们做的是同样的事情,但是以不同的方式,所以在这里获得了什么?
编辑1:实际上接口是在其他地方实现的.所以接口不包含任何实现代码,它只包含方法.