工厂模式个单例模式应该算的上设计模式里面最容易理解的两个模式了。
工厂模式提供了一种比较好的创建对象的方式。我们可以不对外暴露暴露机子的创建逻辑,提现比较好的封装性。
而且扩展的时候只需要添加实体方法和修改工厂类就好了,比较方便
实现:我用王老吉和加多宝凉茶举例
首先先定义:凉茶这个接口,也可以说是一种标准,只要满足这个标准我们就承认它是凉茶
//CoolTea.java
public interface CoolTea{
void attribute1();
void attribute2();
void brand();
}
加多宝和王老吉遵循这个标准 的实体类。实现这个接口
//王老吉
public calss WLJ implements CoolTea{
@Override
public void attribute1(){
System.out.println("甜的")
}
@Override
public void attribute1(){
System.out.println("液体")
}
@Override
public void brand(){
System.out.println("王老吉")
}
}
//加多宝
public calss JDB implements CoolTea{
@Override
public void attribute1(){
System.out.println("甜的")
}
@Override
public void attribute1(){
System.out.println("液体")
}
@Override
public void brand(){
System.out.println("加多宝")
}
}
创建一个生产凉茶的工厂
public class CoolTeaFactory{
public CoolTea getGoolTea(String teaType){
if(teaType.equals("jdb")){
return new JDB();
}else if(teaType.equals("wlj")){
return new WLJ();
}else{return null;}
}
}
工厂模式完成了。使用的时候用
CoolTeaFactory 创建工厂就可以获取CoolTea对象了
CoolTeaFactory ctf = new CoolTeaFactory();
CoolTea ct = ct.getCoolTea("###");
我们只需要输入我们需要的名字就能拿到对应的凉茶
方法可以看做是一组标准,例如凉茶,只要实现的液体,甜的(实际肯定有其他属性)品牌,管他红罐还是金罐,我们都认为是凉茶,假如后面又有新的凉茶,例如和其正,只要他实现上面的三个属性,即使是瓶装的,也是凉茶
扩展很方便,,,,,,
-玩蛇,,,感觉侧重在将接口的作用了。。。。
下次想好再改!!!