设计模式中,有简单工厂模式,工厂方法模式和抽象工厂模式,自己老是混淆,现在总结一下。
简单工厂模式:工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关类。
创建一个单独的类创造实例,例如运算类,有加减乘除,首先定义父类Operation,加减乘除继承Operation类,工厂类定义如下
class OperationFactory
{
public static Operation createOperation(string operate)//operate 表示选择条件
{
Operation oper = null;
switch(operate)
{
case "+":
oper = new OperationAdd();
break;
case "-":
oper = new OperationSub();
break;
}
}
}
要增加新的运算时,只需要添加新的运算子类并增加相应的switch分支即可。
工厂方法模式:
定义一个用于创建对象的接口,让子类决定实例化哪个类。
抽象工厂模式:
系统的产品有多余一个产品族,而系统只消费某一个产品族,不会两个产品族同时使用。如Windows和linux操作系统
button-->windows/linux
text-->windows/linux
属于同一产品族的在一起使用,所有产品以相同的接口出现。
定义方式
IFactory {
public Button ButtonFactory();
public Text TextFactory();
}
WindowsFactory implements IFactory {
public Button ButtonFactory(){
return New WindowButton();
}
public Text TextFactory(){
return new WindowText();
}
}
定义Button、Text抽象类
interface Button {
//button提供的外部接口
}
interface Text{
}
}
WindowButton,LinuxButton继承Button,对应的Factory只产生某一系类的产品