java工厂模式属于mvc吗?怎么在mvc中实现?

TheDisguiser 2020-08-30 22:10:03 java常见问答 4851

Mvc我们大家都知道,是一种经典的设计模式,那么工厂模式属于它管吗?能不能在mvc中实现呢?下面听小编来讲讲。

工厂模式是否属于mvc?

在java中有着23种设计模式,像是常用的单例模式,值对象模式,工厂模式,简单工厂等。

工厂模式:工厂模式主要是为创建对象提供接口,工厂模式分为三类:

1、简单工厂模式(Simple Factory)

2、工厂方法模式(Factory Method)

3、抽象工厂模式(Abstract Factory)

它们三个从上到下会逐步抽象,并且更具一般性。

MVC模式:MVC(Model/View/Controller)模式,模型-视图-控制器(MVC)是80年代Smalltalk-80出现的一种软件设计模式,现在已经被广泛的使用。

1、模型(Model)

模型是应用程序的主体部分。模型表示业务数据,或者业务逻辑.

2、视图(View)

视图是应用程序中用户界面相关的部分,是用户看到并与之交互的界面。

3、控制器(controller)

控制器工作就是根据用户的输入,控制用户界面数据显示和更新model对象状态。

MVC 式的出现不仅实现了功能模块和显示模块的分离,同时它还提高了应用系统的可维护性、可扩展性、可移植性和组件的可复用性。

通过以上,我们可明确的说,不是,工厂模式并不属于mvc,它是设计模式中的一种,而mvc并不是设计模式。

mvc中怎么实现工厂模式?

如下,当有数据进入controller的时候

public class VirtualController
{
    private static Service service = CommonFactory.getFactory()
        .getInstance(Service.class);
    public static void main(String[] args)
    {
        User nuser = new User();
        nuser.setName("奶娃");
        service.insert(nuser);
    }
}

首先是实体类

public class User
{
    public String getName()
    {
        return name;
    }
    public void setName(String name)
    {
        this.name = name;
    }
    private String name;
}

所以到我们定义一个service 的接口 处理所有用户的业务

//也就是相当于子工厂
public interface Service
{
    public void insert(User user);
    public void deldte(User user);
}
//子工厂的实现
public class UserService implements Service
{
    private Dao dao = CommonFactory.getFactory()
        .getInstance(Dao.class);
    @Override
    public void insert(User user)
    {
        System.out.println("普通用户业务");
        dao.insert(user);
    }
    @Override
    public void deldte(User user)
    {}
}
public class VipService implements Service
{
    private Dao dao = CommonFactory.getFactory()
        .getInstance(Dao.class);
    @Override
    public void insert(User user)
    {
        System.out.println("Vip用户业务");
    }
    @Override
    public void deldte(User user)
    {}
}

Dao层

public interface Dao
{
    public void insert(User user);
    public void deldte(User user);
}
public class MysqlDao implements Dao
{
    @Override
    public void insert(User user)
    {
        System.out.println("Mysql 插入用户信息 " + user.getName());
    }
    @Override
    public void deldte(User user)
    {}
}
public class OrcalDao implements Dao
{
    @Override
    public void insert(User user)
    {
        System.out.println("Mysql 插入用户信息 " + user.getName());
    }
    @Override
    public void deldte(User user)
    {}
}

工厂实现

public class CommonFactory
{
    private Properties properties = new Properties();
    private CommonFactory()
    {};
    private static CommonFactory factroy = new CommonFactory();
    public static CommonFactory getFactory()
    {
        return factroy;
    }
    public < T > T getInstance(Class < T > clazz)
    {
        try
        {
            properties.load(new FileInputStream("C:\\Users\\Administrator.TEDU-20180130RP\\IdeaProjects\\springboot\\hello\\resource\\config.properties"));
            String _className = clazz.getSimpleName();
            String className = properties.getProperty(_className);
            return (T) Class.forName(className)
                .newInstance();
        }
        catch (Exception e)
        {
            e.printStackTrace();
            return null;
        }
    }
}

这样我们就能够通过修改配置文件进行对不同业务的处理

以上就是今天的全部内容,更多java常见问题及解决方法敬请关注奇Q工具网了解详情。

推荐阅读:

java语法简单实现工厂模式详解,java工厂模式例子

java工厂模式例子,java实例代码

java工厂模式详解,java工厂模式概念三种详解