简单工厂:将目标的创建委托给工厂
目的:将客户程序从具体类解耦.
假如有两个游戏:Cs 和Cf.
public interface Game{
void play();
}
class Cs implements Game{
public void play(){
syso"射击";
}
}
class Cf implements Game{
public void play(){
syso"充钱";
}
}
public class SimpleFactory(){
public static Game playWhat(String s){
if(s.equals(“充钱”)){
return new Cf();
}else{
return new Cs();
}
}
main(){
Game g = SimpleFactory.playWhat(“充钱”);
g.play;
}
}
工厂设计模式:
问题:在简单工厂中,所有的对象都靠一个工厂类创建,以后不好维护和添加新类.
如:现在需要添加新的游戏pubg 就需要修改SimpleFactory的内部实现.
解决:将工厂也抽象为一个接口,然后根据需求不同实现不同的类创建工厂.
public interface Game{
void play();
}
public interface GameFactory{
void creatGame();
}
class Cs implements Game{
public void play(){
syso"射击";
}
}
class Cf implements Game{
public void play(){
syso"充钱";
}
}
class TencentFactory implements GameFactory {
public Game creatGame(){
return new Cf();
}
}
class OtherFactory implements GameFactory {
public Game creatGame(){
return new Cs();
}
}
这样,如果要添加新的游戏Pubg ,只需创建新的Pubg工厂即可.
如有需要,可进一步把工厂的接口方法抽象出更具有普遍性的方法出.
如:creatChongqianGame();creatFpsGame().维护更加简洁