面向对象设计模式.docx

上传人:太** 文档编号:86415303 上传时间:2023-04-14 格式:DOCX 页数:8 大小:18.48KB
返回 下载 相关 举报
面向对象设计模式.docx_第1页
第1页 / 共8页
面向对象设计模式.docx_第2页
第2页 / 共8页
点击查看更多>>
资源描述

《面向对象设计模式.docx》由会员分享,可在线阅读,更多相关《面向对象设计模式.docx(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、面对对象设计模式一创立型模式(学习笔记)学习资料:1、设计模式:可服用面对对象软件的基础2、灵敏软件开发:原那么、模式与实践3、重构:改善既有代码的设计4、Refactoring to Patterns5、面对对象分析与设计场景设计一个人事管理系统,其中一个功能是对不同类型的员工,计算当月的工资一一不同类型的员工, 抑有不同的薪金计算制度。结构化设计(1)获得人事系统中全部可能员工类型;(2)依据不同的员工类型所对应的不同薪金制度,计算其工资。面对对象设计(1)依据不同的员工类型设计不同的类,并使这些类继承自一个Employee抽象类,其中有一个抽象方法 GetS al ary;(2)在不同的

2、员工类中,依据自己的薪金制度,重写GelSalary方法。需求转变场景随着客户公司业务规模的拓展,又消失了更多类型的员工结构化设计几乎全部涉及到员工类型的地方都需要做转变面对对象设计只需要在新的文件里添加新的员工类,让其继承自Employee抽象类,并重写GetSarary。方法,然后 在EmployeeFactory.GetEmployee方法中依据相关条件,产生新的员工类型 面对对象设计三大原那么:1、针对接口编程,而不是针对实现编程;2、优先使用对象组合(has a),而不是类继承(isa);3、封装变化点;使用重构得到模式一一设计模式的应用不宜先入为主有关创立型模式的争论1、Singl

3、eton模式解决的是实体对象个数的问题,其他创立型模式解决的都是new所带来的耦合关系;2、Factoiy Method Abstract FactoryBuilder都需要一个额外的工厂类来负责实例化“易变对象,而Prototype那么是通过原型(一个特别的工厂类)来克隆“易变对象”; 3、假如遇到“易变对象”,起初的设计通常从Factory Melhod开头,当遇到更多的简单变化时,再考虑重构为其他三种工厂模式(Abstract Factory、Builder、Prototype)o五条更详细的设计原那么:1、单一职责原那么(SRP)一个类应当仅有一个引起它变化的缘由2、开放封闭原那么(O

4、CP)-类模块应当是可扩展的,但是不行修改(对扩绽开放,对更改封闭)3、Liskov 替换原那么(LSP)-子类必需能够替换它们的基类4、依靠倒置原那么(DIP)-高层模块不应当依靠于底层模块,二者都应当依靠于抽象-抽象不应当依靠于实现细节,实现细节应当依靠于抽象5、接口隔离原那么(ISP)-不应当强迫客户程序依靠于它们不用的方法模式分类:1、从目的看创立型(Creational)模式:负责对象创立一结构型(Structural)模式:处理类与对象间的组合一行为性(Behavionral)模式:类与对象交互中的职责安排2、从范围来看-类模式处理类与子类的静态关系对象模式处理对象间的动态关系Si

5、ngleton单件(创立型模式)1、存在的问题有一些特别的类,必需保证它们在系统中只存在一个实例,才能确保它们的规律正确性以及良好的效 率一一类设计者的责任,而不是使用者的责任。2、解决思路一封装变化点:哪里变化,封装哪里-潜台词:假如没有变化,当然不需要额外的封装3、意图保证一个类仅有一个实例,并供应一个该实例的全局访问点。单线程Singleton模式的几个要点:1、Singleton模式中的实例构造器可以设置为protected以允许子类派生;2、Singleton模式一般不要支持IClonable接口;3、Singleton模式一般不要支持序列化;4、Singleton模式只考虑了对象创

6、立的管理,没有考虑对象销毁的管理;5、Singleton模式不能用于多线程环境。单线程Singleton模式扩展:1、将一个实例扩展到详细的n个实例,例如对象池的实现(如Type);2、将new构造器的调用转移到其他类中,例如多个类协同工作环境中,某个局部环境只需要拥有某个类 的实例(如 HttpContext);3、理解和扩展Singleton模式的核心是“如何掌握用户使用new对一个类的实例构造器的任意调用”。Abstract Factory Jill MU (创立型模式)new的问题1、常规的对象创立方法:Road road = new Road();2、存在的问题-实现依靠,不能应对“

7、详细实例化类型”的变化3、解决思路-封装变化点:哪里变化,封装哪里-潜台词:假如没有变化,当然不需要额外的封装工厂模式的缘起1、变化点在“对象创立”,因此就封装“对象创立”;2、面对接口编程一依靠接口而非依靠实现3、简洁工厂例如:(1)单一对象class RoadFactory/类库Ipublic static Road CreateRoad() return new Road();)Road road = RoadFactory. CreateRoad (); 在其他地方实现客户程序(2)多个相互依靠的对象class RoadFactory/类库,无法实现不同风格(变化点)!public s

8、tatic Road CreateRoad()return new Road();public static Building CreateBuildingOreturn new Building();)public static Tunnel CreateTunnel()(return new Tunnel();)public static Jungle Createjungle()(return new Jungle();)创立其他对象以下代码在其他地方实现客户程序(相对稳定)Road road 二 RoadFactory. CreateRoadO ;Building building =

9、 RoadFactory. CreateBuildingO;对象交互的代码抽象工厂1、存在的问题-不能应对“不同系列对象”的变化(比方不同风格的对象)2、解决思路一使用面对对象的技术来“封装”变化点-绕过常规的对象创立方法,避开客户程序和“多系列详细对象创立”的紧耦合-供应一个接口,让该接口负责“多系列详细对象创立”而不用指定详细的类3、意图-实现“多种相互依靠的对象”的创立工作一实现“多系列对象”的创立工作4、应用要点(1)假如没有“多系列对象的构建”的需求变化,那么没有必要使用Abstract Factory模式;(2) “系列对象”指的是这些对象之间有相互依靠、或作用的关系;(3) Ab

10、stract Factory模式主要在于应对“新系列”的需求变化,而难以应对“新对象”的需求变化;(4) Abstract Factory模式常常和Factory Method模式共同组合来应对“新对象”的需求变化。Builder生成器(创立型模式)Builder模式的缘起1、假设创立嬉戏中的一个房屋设施(House),该房屋的构建由几个局部构成,且各个局部要富于变化;2、假如使用最直观的设计方法,每一个房屋局部的变化,都将导致房屋构建的重新修正。动机1、在面临一个简单对象的创立工作时.,通常由各局部的子对象用肯定的算法构成,由于需求的变化,这个 简单对象的各个局部常常面临着猛烈的变化,但是将

11、它们组合在一起的算法相对稳定;2、供应一种“封装机制”来隔离出简单对象的各个局部的变化,从而保持系统中的稳定构建算法不随着需 求转变而转变;意图将一个简单对象的构建与其表示相分别,使得同样的构建过程可以创立不同的表示。3、应用要点(1)Builder模式主要用于“分步骤构建一个简单的对象”其中“分步骤”是一个稳定的算法,而简单对象的各个局部那么常常变化(2)变化点在哪里,封装哪里-Builder模式用于应对“简单对象各个局部”的需求变动,而难以应对“分步骤构建算法”的需求变动(3) Abstract Factory模式解决“系列对象”的需求变化,Builder模式解决“对象局部”的需求变化一

12、Builder模式通常和Composite模式组合使用Factory Method工厂方法(创立型模式)从耦合关系谈起:耦合关系直接打算着软件面对变化时的行为-模块与模块之间的紧耦合使得软件面对变化时,相关的模块都要随之更改-模块与模块之间的松耦合使得软件面对变化时,一些模块更简洁被替换或者更改,但其他模块保持不变 动机一在软件系统中,常常面临着“某个对象”的创立工作,由于需求的变化使得该对象的详细实现常常面临 着猛烈的变化,但是它却拥有比拟稳定的接口-供应一种“封装机制”来隔离出“易变对象”的变化,从而保持系统中“其他依靠该对象的对象”不随 着需求转变而转变意图一定义一个用于创立对象的接口,

13、让子类打算实例化哪一个类,从而使得一个类的实例化延迟到子类应用要点(1) Factory Method模式主要用于隔离类对象的使用者和详细类型之间的耦合关系。-面对一个常常变化的详细类型,紧耦合关系会导致软件的脆弱(2) Factory Method模式通过面对对象的手法将所要创立的详细对象延迟到子类,从而实现一种扩展的策 略,较好地解决了这种紧耦合关系。(3) Factory Method模式解决“单个对象”的需求变化;Abstract Factor模式解决“系列对象”的需求变化;Builder模式解决“对象局部”的需求变化。Prototype原型模式(创立型模式)依靠关系的倒置一抽象不应当

14、依靠于实现细节,实现细节依靠于抽象动机一在软件系统中,常常面临着“某些结构简单的对象”的创立工作,由于需求的变化使得该对象的详细实 现常常面临着猛烈的变化,但是它却拥有比拟稳定全都的接口-供应一种“封装机制”向客户程序隔离出“易变对象”,从而保持系统中“其他依靠这些易变对象的对 象的客户程序”不随着需求转变而转变意图-使用原型实例指定创立对象的种类,然后通过拷贝这些原型来创立新的对象应用要点(1) Prototype原型模式同样用于隔离类对象的使用者和详细类型(易变类)之间的耦合关系,它同样要求 这些“易变类”拥有“稳定的接口”。(2) Prototype原型模式采纳“原型克隆”的方式创立易变类的实体对象,从而实现敏捷地动态创立“拥有 某些稳定接口”的新对象。(3) Prototype原型模式中的Clone方法可以采用.NET中的Object类的MemberwiseClone。方法或者序列化方法来实现深拷贝。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 解决方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁