zoukankan      html  css  js  c++  java
  • 设计模式

    工厂模式:

    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的懒加载也是通过代理类实现的.

  • 相关阅读:
    osip状态机分析
    配置tomcat 加载指定的jar
    oracle创建用户并指定表空间
    CentOS7通过rsync+crontab实现两台服务器文件同步
    CentOS7配置MySQL5.7主备
    CentOS7本地安装MySQL5.7
    设置mysql 事务锁超时时间 innodb_lock_wait_timeout
    获取指定年月的第一天与最后一天
    Nginx 反向代理504 Gateway Time-out
    ubuntu下安装配置apache2与php
  • 原文地址:https://www.cnblogs.com/javatk/p/7220345.html
Copyright © 2011-2022 走看看