博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式详细系列教程 (二) 创建型模式
阅读量:5947 次
发布时间:2019-06-19

本文共 1216 字,大约阅读时间需要 4 分钟。

  1.工厂方法模式(Factory Method)

            定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂模式使一个类的实例化延迟到其子类.

       

       例如:雷锋帮助别人,雷锋并不指具体哪个人,可以是大学生、社区志愿者等等;我们可以写一个雷锋工厂接口IFactory(创建对象的接口),然后,让ColleageFactory类、VolunteerFactory类类来实现这个接口(子类)。如果需增加子类增加代码即可,克服了简单工厂违背开放-封闭原则的缺点,又保持了封装对象创建过程的优点。

     2.抽象工厂模式(Abstract Factory)

               提供一个创建一系列或相关依赖对象的接口,而无需指定它们具体的类.

      例如:数据访问程序,我们对数据库操作时,可能会SQL server、DB2、Access等不同数据库操作,可能给不同表插入、获得的记录。

       如果想在SQL server数据库中,在User表增加一条记录,我们可以写一个接口IFactory,再写一个SQLserverFactory类,对SQL server 数据库中表User增加记录;当你想对Access数据库中User表操作时,增加一个AccessFactory类,即可。另外为了解耦客户端直接操作数据库,需要把对数据库的操作提取出一个接口IUser。

     3.建造者模式(Builder)

     

   例如:建造小人,有胖人、瘦人、高的、矮的等等,在建造时难免会出错,少造个腿或胳膊等,利用建造这模式可解决这个问题。

       Builder是一个抽象类,定义了一些基本建造方法(人的基本组成部分,如头、胳膊、腿、身体),具体的高、瘦等细节由子类来实现,用Director类使对象建造过程与外部(客户端)分离,减少耦合。

    4.原型模式(Prototype)

              用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.

     例如:简历复印,我们有一份原简历,需要复制多份或复制出和原简历差不多的简历,就可用原型模式写一个Prototype抽象类,里面定义一个抽象Clone()方法,然后,由ConcretePrototype具体实现。这里面经常涉及的浅复制和深复制问题,应该注意。

     5.单例模式(Singleton)

              保证一个类仅有一个实例,并提供一个访问它的全局访问点.

    通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象。一个最好的办法就是,让类自身负责保存它的唯一实例。这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法。

     单例模式可能会有安全问题,当多线程调用GetInstance()时,可以用lock语句是一段代码位于临界区,一个线程进入后,另一个线程就不能进入这段代码区,直到第一个线程释放该对象。

转载于:https://www.cnblogs.com/lilongsheng/archive/2012/01/15/3226130.html

你可能感兴趣的文章
fiddler+android抓包工具配置使用
查看>>
Spring Data JPA 复杂/多条件组合分页查询
查看>>
css文本 颜色1
查看>>
博客搬家了
查看>>
JavaScript中的作用域,闭包和上下文
查看>>
Python中使用ElementTree解析xml
查看>>
Python LOGGING使用方法
查看>>
Dominating Patterns
查看>>
截取指定字符串
查看>>
metrics-server最新版本有坑,慎用
查看>>
linux虚拟文件系统浅析
查看>>
HBase数据压缩编码探索
查看>>
sprint计划会议总结
查看>>
团队项目冲刺1
查看>>
fon循环总是返回最后值问题
查看>>
Android新权限机制 AppOps
查看>>
“蓝桥杯”软件大赛入门训练4道题
查看>>
[2010山东ACM省赛] Greatest Number(数的组合+二分搜索)
查看>>
Unable to get the CMake version located at
查看>>
爬虫基本原理
查看>>