接口类:
public interface ICompany {
public String getCompanyName();
}
实现类a:
public class AlibabaCompany implements ICompany{
@Override
public String getCompanyName() {
return "alibaba";
}
}
实现类b:
public class BaiduCompany implements ICompany{
@Override
public String getCompanyName() {
return "baidu";
}
}
实现类c:
public class HuaWeiCompany implements ICompany{
@Override
public String getCompanyName() {
return "huawei";
}
}
工厂类:
/**
* 简单工厂模式:也叫做静态工厂模式, 可创建多个实现类, 简单工厂模式实现了创建实现类的代码跟客户端分离, 在工厂类里面可以添加所需生成实现类的逻辑;
* 缺点是每次增加一种实现类,都需要修改工厂类,不符合开闭原则;
* 工厂模式:每个工厂类只创建一个实现类;
* 如果要满足开闭原则的话, 考虑使用工厂模式,但是如果有多个实现类的话就需要创建多个工厂类, 会显得比较冗余;
*/
public class CompanyFactory {
/**
* 把对象的创建权交给工厂类实现
*/
public static ICompany createOperation(String type) {
if (TypeEnum.ALIBABA.getCode().equals(type)) {
return new AlibabaCompany();
} else if (TypeEnum.HUAWEI.getCode().equals(type)) {
return new HuaWeiCompany();
} else if (TypeEnum.BAIDU.getCode().equals(type)) {
return new BaiduCompany();
} else {
return null;
}
}
}
枚举类:
public enum TypeEnum {
ALIBABA("1", "ALIBABA"),
HUAWEI("2", "HUAWEI"),
BAIDU("3", "BAIDU");
TypeEnum(String code, String message) {
this.code = code;
this.message = message;
}
String code;
String message;
public String getCode() {
return code;
}
public String getMessage() {
return message;
}
public static TypeEnum convert(String code) {
for (TypeEnum typeEnum : TypeEnum.values()) {
if (typeEnum.getCode().equals(code)) {
return typeEnum;
}
}
return null;
}
}
测试类:
public class MainTest {
public static void main(String[] args) {
ICompany operation = CompanyFactory.createOperation("1");
String companyName = operation.getCompanyName();
System.out.println(companyName);
}
}
运行结果:
alibaba
说明:
简单工厂模式:也叫做静态工厂模式, 可创建多个实现类, 简单工厂模式实现了创建实现类的代码跟客户端分离, 在工厂类里面可以添加所需生成实现类的逻辑;
缺点是每次增加一种实现类,都需要修改工厂类,不符合开闭原则;
工厂模式:每个工厂类只创建一个实现类;
如果要满足开闭原则的话, 考虑使用工厂模式,但是如果有多个实现类的话就需要创建多个工厂类, 会显得比较冗余;