工厂模式:客户端不需要知道具体的实现,客户端只需要面向接口编程就行,这样是客户端从具体的实现中解耦和。分为简单工厂模式、工厂方法模式、抽象工厂模式
一、抽象工厂模式
网上的一个例子:一个客户告诉装机员他需要装一台什么样的电脑。
//抽象一个工厂
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、如同种类产品不同系列,我们可以用抽象工厂的设计模式。
缺点:当扩展不同种类的产品时,难于扩展,因为修改工厂会同时修改工厂的实现类。
1475

被折叠的 条评论
为什么被折叠?



