工厂模式主要是解决使用者和被使用者之间相互依赖的问题。
非工厂模式:
public class Factory {
public static void main(String[] args) {
//类Factory 与 类Phone之间产生了关系---即使用者和被使用者之间产生了耦合,相互依赖,当被使用者改变时,会影响使用者
Product phone = new Phone();
phone.work();
}
}
//产品
interface Product{
public void work();
}
class Phone implements Product{
public void work(){
System.out.println("使用手机");
}
}
class Computer implements Product{
public void work(){
System.out.println("使用电脑");
}
}
工厂模式:
public class Factory {
public static void main(String[] args) {
//类Factory 与 类Phone之间产生了关系---即使用者和被使用者之间产生了耦合,相互依赖,当被使用者改变时,会影响使用者
// Product phone = new Phone();
//使用工厂类降低耦合
Product phone = ProductFactory.getProduct("phone");
//如果phone类被删除掉,不会抛出异常而是空值
if(phone != null){
phone.work();
}
}
}
/**
* 工厂类
*/
class ProductFactory{
public static Product getProduct(String productName){
//根据传入的条件判断工厂返回的产品类型
if("phone".equals(productName)){
return new Phone();
}else if("computer".equals(productName)){
return new Computer();
}else {
return null;
}
}
}
//产品
interface Product{
public void work();
}
class Phone implements Product{
public void work(){
System.out.println("使用手机");
}
}
class Computer implements Product{
public void work(){
System.out.println("使用电脑");
}
}
测试结果: