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工具网了解详情。
推荐阅读: