这个简单工厂是否违反了开放封闭原则?
发布时间:2020-05-24 12:58:39 所属栏目:Java 来源:互联网
导读:这个简单工厂是否违反开放封闭原则? 每次需要创建新的具体产品时,SimpleProductFactory都需要更改,但它遵循单一责任原则,因为这是它永远改变的唯一原因.它的唯一目的是使客户不违反开放的封闭原则,所以我认为它本身不能违反,因为很明显这个代码是需要的. 我
|
这个简单工厂是否违反开放封闭原则? 每次需要创建新的具体产品时,SimpleProductFactory都需要更改,但它遵循单一责任原则,因为这是它永远改变的唯一原因.它的唯一目的是使客户不违反开放的封闭原则,所以我认为它本身不能违反,因为很明显这个代码是需要的. 我对更换工厂不感兴趣,但是这个具体的例子是否违规. 产品 interface Product{
public int getPrice();
}
牛奶 class Milk implements Product{
public int getPrice(){ return 5; }
}
芯片 class Chips implements Product{
public int getPrice(){ return 3; }
}
SimpleProductFactory 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());
}
}
解决方法
回答你的问题. “是的,简单工厂违反开放封闭原则是有原因的.” 应该修改Simple Factory模式,以帮助我们为调用者选择特定的类.如果我们使这个类符合开放封闭原则,那么我们必须将负担转移到其他类,这个类将不再用于工厂的目的.并非所有原则都是绝对的.我们需要权衡使用时或不使用时的好处. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
