工厂方法模式
Posted 大兴兴
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了工厂方法模式相关的知识,希望对你有一定的参考价值。
工厂方法模式 就是在 简单工厂模式的基础上 将工厂也抽象出来 并具体实现,也是创建者类型。 即一个抽象工厂以及对应的多个实现类,一个抽象产品以及对应的实现类。;
例子在简单工厂模式基础上扩展
/*******************抽象产品(登入)***********************/
package functionFactoryType;
/**
* 登入接口,以供各种登入方式实现接口
* (在工厂模式中,实现该登入接口的相当于各种对应产品)
* @author dxx
*
*/
public interface LoginInteface {
/**
*
* @param name 用户名
* @param password 密码
* @return 正确返回true,否则返回false
*/
public boolean verifyLogin(String name,String password);
}
/****************登入实现类(密码登入)*****************************/
package functionFactoryType;
/**
* 通过密码的登入验证
* @author dxx
*
*/
public class PasswordLogin implements LoginInteface {
/**
* 通过密码等验证进行登入
*/
public boolean verifyLogin(String name, String password) {
System.out.println("密码登入验证中间操作");
return true;
}
}
/**********************登入实现类(密码登域名*********************************/
package functionFactoryType;
/**
* 域名登入
* @author dxx
*
*/
public class DomainLogin implements LoginInteface{
/**
* 域名登入验证
*/
public boolean verifyLogin(String name, String password) {
System.out.println("执行域名登入的验证,执行相关中间操作");
return true;
}
}
/*****************抽象工厂*******************************/
package functionFactoryType;
/**
* 抽象工厂
* @author dxx
*
*/
public interface FactoryInteface {
/**
* 创建对应的产品工厂
* @return
*/
public LoginInteface createFactory();
}
/****************密码登入工厂***************************/
package functionFactoryType;
/**
* 实现工厂接口,创建某一种工厂
* @author dxx
*
*/
public class PasswordFactory implements FactoryInteface{
/**
* 生产某一种产品的工厂
*/
public LoginInteface createFactory() {
return new PasswordLogin();
}
}
/*******************域名登入工厂***************************/
package functionFactoryType;
/**
* 创建具体的工厂
* @author dxx
*
*/
public class DomainFactory implements FactoryInteface{
/**
* 实现工厂接口,生产指定一种产品
*/
public LoginInteface createFactory() {
return new PasswordLogin();
}
}
然后实例化对应的工厂 就可以生产指定的产品, 不用将一堆的判断逻辑放在 工厂中实现某一种产品的实例
以上是关于工厂方法模式的主要内容,如果未能解决你的问题,请参考以下文章