uml*_*cat 8 c# oop design-patterns factory-pattern
我有2个案例,一个方法可以被认为是一个工厂设计模式,这个例子是在C#,altought,可以应用于其他编程语言:
enum NinjaTypes {
Generic,
Katanna,
StarThrower,
Invisible,
Flyer
}
public class Ninja {
public string Name { get; set; }
public void jump() { ... }
public void kickAss() { ... }
}
public class KatannaNinja: Ninja {
public void useKatanna() { ... }
}
public class StarNinja: Ninja {
public void throwStar() { ... }
}
public class InvisibleNinja: Ninja {
public void becomeInvisible() {...}
public void becomeVisible() {...}
}
public class FlyNinja: Ninja {
public void fly() {...}
public void land() {...}
}
public class NinjaSchool {
// always return generic type
public Ninja StandardStudent() {...}
// may return other types
public Ninja SpecialityStudent(NinjaTypes WhichType) {...}
}
Run Code Online (Sandbox Code Playgroud)
该方法StandardStudent()始终返回相同类型的SpecialityStudent(...)新对象,可以从共享相同超类/基类型的不同类返回新对象.这两种方法都是故意不是虚拟的.
问题是,两种方法都是"工厂设计模式"吗?
我的猜测是SpecialityStudent(...),但StandardStudent()不是.如果第二个不是,可以考虑另一个设计模式?