工厂模式

工厂模式:客户端不需要知道具体的实现,客户端只需要面向接口编程就行,这样是客户端从具体的实现中解耦和。分为简单工厂模式、工厂方法模式、抽象工厂模式

 

一、抽象工厂模式

网上的一个例子:一个客户告诉装机员他需要装一台什么样的电脑。

//抽象一个工厂
public interface AbstractFactory{
     
    //生产方法 相当一条工厂的生产线
    public CPU createCPU();

    //生产方法 相当一条工厂的生产线
    public Mainboard  createMainboard();
}


//ADM工厂的实现
public class AMDFactory implements AbstractFactory{
    //生产方法 相当一条工厂的生产线
    public CPU createCPU(){

        return new CPU("amd-cpu"); //---这里可以是一个简单工厂
    }

    //生产方法 相当一条工厂的生产线
    public Mainboard  createMainboard(){

       return new Mainboard('amd-board');
    }
     
}


//Intel工厂实现
public class IntelFactory implements AbstractFactory{
   //生产方法 相当一条工厂的生产线
    public CPU createCPU(){
       return new CPU("Intel-cpu");
    }

    //生产方法 相当一条工厂的生产线
    public Mainboard  createMainboard(){
      return new Mainboard("intel-board");
    }
     
}


//电脑装机者的实现
public class PcMaker{
   CPU cpu=null;
   
   Mainboard board=null;

   //装机方法  装机人员没并不知道具体的实现
  public void makePc(AbstractFactory af){
        cpu=af.createCPU();
        board=af.createMainboard();
  }
}




下面是具体的调用
main(){
  AbstartFactory af=new AMDFactory();
  
  PcMacker maker=new PcMaker();
  
   maker.makePc(af);
}


 

工厂模式的使用场景:

 1、如数据库的链接,我们在不同数据库之间的切换,可以使用工厂模式创建数据库链接。

 2、如同种类产品不同系列,我们可以用抽象工厂的设计模式。

 

缺点:当扩展不同种类的产品时,难于扩展,因为修改工厂会同时修改工厂的实现类。

你可能感兴趣的:(设计模式)