设计模式-02-创建型设计模式
16页1、创建型设计模式创建型设计模式Singleton 模式l动机(Motivation)l在软件系统中,经常有这样一些特殊的类,必须保证它们在系统中只存在一个实例,才能确保它们的逻辑正确性、以及良好的效率。l如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例?l这应该是类设计者的责任,而不是使用者的责任。意图(Intent)l保证一个类仅有一个实例,并提供一个该实例的全局访问点。结构(Structure)参与者参与者lS i n g l e t o nl定义一个I n s t a n c e操作,允许客户访问它的唯一实例。I n s t a n c e是一个类操作(即S m a l l t a l k中的一个类方法和C + +中的一个静态成员函数)。l可能负责创建它自己的唯一实例。协作协作l客户只能通过S i n g l e t o n的I n s t a n c e操作访问一个S i n g l e t o n的实例。Factory Method 模式l工厂模式的缘起l常规的对象创建方法:l/ 创建一个Road 对象lRoad road=new Road();lnew的问题:l实现
2、依赖,不能应对“具体实例化类型”的变化。l解决思路:l封装变化点 哪里变化,封装哪里l潜台词:如果没有变化,当然不需要额外的封装!动机动机(Motivation)l在软件系统中,经常面临着创建对象的工作;由于需求的变化,需要创建的对象的具体类型经常变化。l如何应对这种变化?如何绕过常规的对象创建方法(new),提供一种“封装机制”来避免客户程序和这种“具体对象创建工作”的紧耦合?意图(意图(Intent)l定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使得一个类的实例化延迟到子类。结构(Structure)Factory Method 的几个要点的几个要点lFactory Method模式用于隔离类对象的使用者和具体类型之间的耦合关系。面对一个经常变化的具体类型,紧耦合关系会导致软件的脆弱。lFactory Method模式通过面向对象的手法,将所要创建的具体对象工作延迟到子类,从而实现一种扩展(而非更改)的策略,较好地解决了这种紧耦合关系。lFactory Method模式解决“单个对象”的需求变化。缺点在于要求创建方法/参数相同Abstract
3、Factory 模式l动机(Motivation)l在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作;同时,由于需求的变化,往往存在更多系列对象的创建工作。l如何应对这种变化?如何绕过常规的对象创建方法(new),提供一种“封装机制”来避免客户程序和这种“多系列具体对象创建工作”的紧耦合?意图(Intent)l提供一个接口,让该接口负责创建一系列“相关或者相互依赖的对象”,无需指定它们具体的类。结构(Structure)Abstract Factory的几个要点的几个要点l如果没有应对“多系列对象构建”的需求变化,则没有必要使用Abstract Factory模式,这时候使用简单的工厂完全可以。l“系列对象”指的是这些对象之间有相互依赖、或作用的关系,例如游戏开发场景中的“道路”与“房屋”的依赖,“道路”与“地道”的依赖。lAbstract Factory模式主要在于应对“新系列”的需求变动。其缺点在于难以应对“新对象”的需求变动。创建型模式比较创建型模式比较lSingleton模式解决的是实体对象个数的问题。除了Singleton之外,其他创建型模式解决的都是new所带来的耦合关系。lFactory Method, Abstract Factory, Builder都需要一个额外的工厂类来负责实例化“易变对象”,而Prototype则是通过原型(一个特殊的工厂类)来克隆“易变对象”。l如果遇到“易变类”,起初的设计通常从Factory Method开始,当遇到更多的复杂变化时,再考虑重构为其他三种工厂模式(Abstract Factory, Builder , Prototype )。
《设计模式-02-创建型设计模式》由会员苏****分享,可在线阅读,更多相关《设计模式-02-创建型设计模式》请在金锄头文库上搜索。
《组织能力的突破:从杨三角看领先企业成功之道》杨国安
2022年第一季度人力资源关键指标专项调研报告
《全球中小微企业在疫情后时代的挑战、应对与转型》
个人信用信息基础数据库数据接口规范
CFCA统一的电子商务安全网上支付平台-系统安装指南
1104工程培训资料_模块09_信用风险分析
基础数据平台作业调度监控系统详细设计说明书
中小企业信贷系统用户需求规格说明书_合同管理
信贷统计监测数据系统详细设计说明书
非现场监管报表指标体系(金融机构法人机构适用)基础报表、特色报表填报说明
经营分析系统用户ETL测试计划书(ABIS部分)
经营分析系统工作汇报
Unix系统知识培训
经营分析系统测试大纲(ELT案例)
经营分析系统测试案例(OLAP案例)
顺义新城林河南大街配套工程实施方案
银行卡统计分析系统详细设计说明书(前台)
银行卡统计分析系统多维应用服务器安装部署
银行卡统计分析系统数据准确性测试案例
银行卡统计分析系统报表数据准确性测试案例
2024-02-20 162页
2024-02-20 52页
2024-02-20 50页
2024-02-20 50页
2024-02-20 57页
2024-02-20 66页
2024-02-20 53页
2024-02-20 91页
2024-02-20 63页
2024-02-20 55页