设计模式-工厂设计模式

简单工厂:将目标的创建委托给工厂
目的:将客户程序从具体类解耦.
假如有两个游戏: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().维护更加简洁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值