gpt4 book ai didi

java - 工厂模式: Accessing child methods

转载 作者:行者123 更新时间:2023-11-30 02:46:45 25 4
gpt4 key购买 nike

我有两个类 CashStore 和 DrinkStore,都从 Store 扩展。我有一个 StoreFactory 类(返回 Store 对象)来为客户端实例化对象。我想从这些客户端访问特定于子类的方法。不类型转换怎么办?如果我使用强制转换,是否会打破模式,因为现在客户知道了 Child 类?

class Store{
A(){}
B(){}
}

class CashStore{
A(){}
B(){}
C(){}
D(){}
}

//impl for drink store and other stores

class StoreFactory{
public Store getStore(String type){
//return a Store obj based on type DrinkStore or CashStore
}
}


class Client{
StoreFactory fac;

public Client(){
fac = new StoreFactory();
Store s = fac.getStore("cash");
s.C(); //requires a cast
}
}

选角会打破我的模式吗?

最佳答案

工厂模式用于与运行时类型解耦。例如,当它是特定于平台或布局的,并且您不希望客户端代码弄乱它时。在您的情况下,您确实需要一个精确的类型,因此工厂模式似乎不是一个好的选择。考虑使用简单的静态方法,例如:

class Stores {
static CashStore createCashStore() {
return new CashStore();
}
static DrinkStore createDrinkStore() {
return new DrinkStore();
}
}

关于java - 工厂模式: Accessing child methods,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40018636/

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