设计模式

工厂模式:

1.例如:我们需要生产一些螺丝吧,我们不需要自己去生产,专门找生产工厂帮我们生产就可以了。这个工厂模式就比如现在的这个工厂,我给他一个东西,工厂就可以为我们提供产品

2.客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。

3.请朋友去麦当劳吃汉堡,不同的朋友有不同的口味,要每个都记住是一件烦人的事情,如果你采用Factory Method模式,

带着朋友到服务员那儿,说“要一个汉堡”,具体要什么样的汉堡呢,让朋友直接跟服务员说就行了。

降低代码的耦合度,提高代码的灵活性.让对象的生成更简单

为系统结构提供了灵活的动态扩展机制。方便维护

项目中的应用:

还有比如HibernateSessionFactory中的创建session,我们需要session的时候只管要要session就可以了,具体怎么创建session的我们不用管,只管用即可,不然的话,你要自己去写代码进行Session的创建,写很多和业务不相干的代码。

还有比如项目中的dao , 都有一个DAOFactory ,假如我们不使用工程模式的话,每个地方都需要new实现类去定义具体的方法,我们可以抽出来一个DaoFactory,让其他的userdao, roledao都去继承daoFactory。

单例模式:在java虚拟机里面有且仅有一个实例。

好处:对象的唯一性,减少内存占用

项目里面怎么用的

1.把类构造器私有化,对外提供一个静态的方法

2.使用JDBC连数据库的时候,连接池只实例化一次

3.程序员定义的一个读取配置文件的工具类。在项目中可能多次使用这个类,如果每次都new一个实例出来,这样在运行期间就会存在

很多实例,而实际上只需要一个实例对象就可以了。多出来的实例对象会浪费内存资源.

策略模式:

 做一件事情有很多种实现的方式

对数据库操作的选择hibernate,ibatis,jdbc

 

观察者模式

如:短信订阅服务

以前我做的在线购物项目,每当节假日的时候,向所有在线用户发广播通知,也可以通过短信的方式通知注册的用户.

我们的spring中的监听器,

 

代理模式

通过一个代理类实现对目标类的调用。

手机代理商,移动营业厅,房地产中介,买火车票到代理点买,寄信委托邮局.淘宝代理

保护原对象,降低了对象的耦合度,增加了代码的灵活性,中介作用.

cglib代理,Hibernate的懒加载也是通过代理类实现的.

原文地址:https://www.cnblogs.com/javatk/p/7220345.html