23种设计模式----工厂模式
工厂模式
工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。
个人理解,工厂模式是将性质相同的方法放在一个容器中,在用户需要的时候只需要知道要的是什么,
选择相应的工厂,调用相应的方法即可。
实现方式大概有以下几种
1:将所需要的内容些在一个方法中,要执行的内容通过参数进行判断。这种调用时根据不同的参数进行判断
2:写一个接口类,接口中定义方法,不同的类需要实现此接口。这种调用时用户需要知道调用的类,以及方法是
3:通过一个类继承抽象类来完成工厂模式。这种调用时只需要在继承抽象类的方法是
从上述几个实现方法中我们知道,第一个代码都写在了一起,不方便维护。
第一种与第二、三种方法对比,第二、三种方法只提供选择,可控性更强
第二个和第三个对比显然第三个更能从调用的角度考虑事情。在用的时候通过一个类调用不同的方法即可
–第一种方式
public class PhoneFactory{
/*
-
通过参数来选择自己需要的服务
*/
public String getPhone(int type){
switch(type){
case 1 :
–实现的内容
return “huawei”;case 2 : --实现的内容 return "pingguo";
//你可以有任意数量的case语句
default : //可选
–实现的内容
return “wu”;
}
}
}
–第二种方式
public interface PhoneFactory{
//
public String getPhone();
}
public class Huawei extends Phone{
public String getPhone(){
–实现的内容
return “huawei”;
}
}
public class pingguo extends Phone{
public String getPhone(){
–实现的内容
return “huawei”;
}
}
–第三种方式
public abstract Phone{
public abstart String gethuawei();
public abstart String getpingguo();
}
public class PhoneFactory extends Phone{
public abstract String gethuawei(){
–实现的内容
return “huawei”;
}
public abstract String getpingguo(){
–实现的内容
return “pingguo”;
}
}
public String FactoryTest(){
/*
* 底层实现的基本相同的情况下,就看看其它方面是否合理,从调用的角度看,第三种方法符合这个思想
*/
public static void main(String[] args) {
//第一种方法的调用
PhoneFactory pfone =new PhoneFactory();
pfone.getPhone();
//第二种方法的调用
PhoneFactory pftwo = new Huawei();
pftwo.getPhone();
//第三种方法的调用
PhoneFactory pftwo = new PhoneFactory();
pftwo.getPhone();
}
}