- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
六种创建型设计模式总结
创建型模式分为六种:单例模式:在系统中只能形成类的一个对象。工厂方法模式:按类型创建出一个笼统的对象。抽象工厂模式:按多级类型创建笼统的对象。模板模式:在抽象类中实现一部分代码,通过继承方式使子类共享,避免代码复制。建造模式:按顺序一步步创建出复杂对象。原型模式:利用克隆方法,快速创建出一模一样的对象。以下为了节省篇幅,忽略了一些程序细节和严谨性,包括:忽略了部分getter和setter方法。忽略了必须的try…catch忽略了一些原本应该从接口实现或从抽象类集成的代码单例模式确保在整个系统中仅有该类的一个对象,该对象对于整个系统来说时全局的。//单例类public class Singleton{//在类中自己初始化一个static且final的自己对象。privatestatic final Singleton singleton = new Singleton();//将类的构造函数定义为私有的,以避免被其他类new出来一个对象。private Singleton() { }//设置一个静态成员函数getInstance(),用于返回对象本身。public static Singleton getInstance() {returnsingleton;}public static void doSomething() { /* do something… */ }}//高层调用类public classClient{public static void main(String[] args){//不是通过new来的,而是通过Singleton.getInstance()来的Singleton singleton = Singleton.getInstance();singleton.doSomething();}}优点:节省资源、可以做全局变量使用。缺点:没有实现接口扩展困难、可能会导致并发性问题。注意:单例对象不要实现Cloneable接口。Spring框架中的每个Bean默认都是单例的,由Spring容器管理Bean生命期,并可以避免并发性问题。工厂方法模式定义一个用于创建对象的接口,让子类决定实例化的是哪一个接口实现类。//抽象产品类publicabstractclassAbstractProduct{publicabstractvoid method() {}}//具体产品1public class Product1extendsAbstractProduct{@overridepublic void method() {System.out.println(“我是产品1”);}}//具体产品2public class Product2extendsAbstractProduct{@overridepublic void method() { System.out.println(“我是产品2”); }}//抽象工厂类publicabstractclassAbstractFactory{//可创建所有从AbstractProduct继承的产品publicabstractT extendsAbstractProductTcreateProduct(ClassT c);}//具体工厂类public class FactoryextendsAbstractFactory{@overridepublicT extendsAbstractProductT createProduct(ClassT c){//如果不用反射,也可向工厂方法传入参数,根据参数通过if来分别创建不同产品的对象//但如果不用反射,则每增加一种具体产品,均需要修改具体工厂类AbstractProduct product = (AbstractProduct)Class.forName(c.getName).newInstance();return (T) product;}}//高层调用类public class Client{public static void main(String[] args){//不是通过new来的,而是通过Singleton.getInstance()来的AbstractFactoryfactory = new Factory();AbstractProduct product1 = factory.createProduct(Product1.class);AbstractProduct product2 = factory.createProduct(Product2.class);product1.method();product2.method();}}输出结果:-----------------我是产品1我是产
您可能关注的文档
最近下载
- 阿法拉伐分油机中文说明Instruction book1.pdf VIP
- 《Java程序设计》教案(思政版).docx VIP
- 四年级上册数学《三位数乘两位数的笔算乘法》(共18张PPT).pptx VIP
- AWS B4.0-2016 焊缝机械测试的标准方法(中文版).pdf
- 《绩效与薪酬管理》课程教学大纲(中文).docx VIP
- 国开电大学习网网络安全技术形考任务答案.pdf VIP
- 成长赛道飞机机电设备维修专业1500字.pptx VIP
- 从业人员食品安全知识培训计划及培训考核记录.docx VIP
- GB50641-2010 有色金属矿山井巷安装工程施工规范.docx VIP
- 胃癌根治术的手术护理查房2讲课文档.ppt VIP
文档评论(0)