设计模式之工厂模式 factory(一)

简说
工厂设计模式
解决问题:创建对象时色耦合度问题,用了工厂模式耦合度变低
解决方案:interface , static newInstance

demo: 登录问题 不同的行业 不同的企业需要的登录模式也是不一样的,

public class LoginActivity {

    /** * @param args */
    public static void main(String[] args) {
        //直接创建对象
        //LoginBizUserPwd loginBizUserPwd=new LoginBizUserPwd();
        /loginBizUserPwd.login("");
        //软件企业做一个类型软件,在全国很多企业用
        //用手机号验证码登录
        //扫描二维码登录
        //用证书登录

        //在工厂设计模式中
        //调接口,面向接口编程
        //当登录模式发生改变时,只需修改(增加新的实现类)IloginBiz接口的实现类,或者工厂类的返回值, 在loginActivity 中就不需要修改了。
        IloginBiz iloginBiz=Factory.newInstance();
        iloginBiz.login("");


    }

}

下面的是Biz 层,登录接口,登录接口的不同实现类,与工厂类

//登录业务的接口,规范了登录方法的参数,返回值类型。
public interface IloginBiz {
  public boolean login(Object object);
}


public class Factory {
// 静态的方法,新建实例的方法 返回不同的实例
 public static IloginBiz newInstance()
 {
     //工厂类返回的值不同,在loginActivity 中就会调用接口的不用的实现类的对象,
     //对象再调用他自己实现的接口的方法
     //return new LoginBizUserPwd();
     return new LoginBizByMobile();
 }
}

//根据用户名 密码登录的实现类
public class LoginBizUserPwd implements IloginBiz{
   public boolean login(Object  object)
   {
       System.out.println("根据用户名,密码判断能不能登录");
       return true;
   }
}

//根据手机号登录的实现类
public class LoginBizByMobile implements IloginBiz{

    @Override
    public boolean login(Object object) {
        System.out.println("根据手机验证码来判断登录是否成功");
        return false;
    }
}

你可能感兴趣的:(工厂模式)