gpt4 book ai didi

java - 这个简单工厂是否违反了开闭原则?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:29:27 25 4
gpt4 key购买 nike

这个简单工厂是否违反了开闭原则?

每次需要创建新的具体产品时,SimpleProductFactory 都需要更改,但它遵循单一职责原则,因为这是它永远更改的唯一原因。它的唯一目的是让客户端不违反开放封闭原则,所以我想它本身不会违反,因为显然某处需要这段代码。

我对更改工厂不感兴趣,但对这个具体示例是否违规不感兴趣。

产品

interface Product{
public int getPrice();
}

牛奶

class Milk implements Product{
public int getPrice(){ return 5; }
}

筹码

class Chips implements Product{
public int getPrice(){ return 3; }
}

简单产品工厂

class SimpleProductFactory{

public Product createProduct(String productName){

if(productName.equals("milk")){
return new Milk();
}
else if(productName.equals("chips")){
return new Chips();
}
return null;
}
}

客户端

class Client{
public static void main(String[] args) {
SimpleProductFactory productFactory = new SimpleProductFactory();
Product prod = productFactory.createProduct("milk");
System.out.println(prod.getPrice());

}
}

最佳答案

Is this Simple Factory violating the Open Closed Principle?

回答您的问题。 “是的,简单工厂违反了开闭原则是有原因的。”

应该修改简单工厂模式,以帮助我们为调用者选择特定的类。如果我们让这个类符合开闭原则,那么我们就必须将负担转移到其他类上,这个类将不再服务于工厂的目的。并非所有原则都是绝对的。我们需要在使用或不使用时权衡利弊。

关于java - 这个简单工厂是否违反了开闭原则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48043773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com