工厂方法模式

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();
    }
}

 

然后实例化对应的工厂 就可以生产指定的产品, 不用将一堆的判断逻辑放在 工厂中实现某一种产品的实例

 

以上是关于工厂方法模式的主要内容,如果未能解决你的问题,请参考以下文章

iOS经常使用设计模式——工厂方法(简单工厂模式,工厂方法模式, 抽象工厂模式)

工厂设计模式

Java设计模式3:工厂方法模式

简单工厂工厂方法抽象工厂区别

设计模式之工厂方法模式

简单工厂方法,工厂模式,抽象工厂模式