电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

16个设计模式-小顾整理

13页
  • 卖家[上传人]:野鹰
  • 文档编号:1354594
  • 上传时间:2017-06-08
  • 文档格式:DOC
  • 文档大小:328.50KB
  • / 13 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、1、面向对象设计原则:1、单一职责原则(Single Responsibility Principle, SRP)定义:一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中。Every object should have a single responsibility, and that responsibility should be entirely encapsulated by the class.2、开闭原则(Open-Closed Principle, OCP)定义:一个软件实体应当对扩展开放,对修改关闭。Software entities should be open for extension, but closed for modification.3、里氏代换原则(Liskov Substitution Principle, LSP)定义:所有引用基类(父类)的地方必须能透明地使用其子类的对象。Functions that use pointers or references to base classes must be able to use obj

      2、ects of derived classes without knowing it.4、依赖倒转原则(Dependence Inversion Principle, DIP)定义:要针对接口编程,不要针对实现编程Program to an interface, not an implementation.5、接口隔离原则(Interface Segregation Principle, ISP)定义:客户端不应该依赖那些它不需要的接口。 (用多个专门的接口,而不使用单一的总接口)Clients should not be forced to depend upon interfaces that they do not use.6、合成复用原则(Composite Reuse Principle, CRP )定义:尽量使用对象组合,而不是继承来达到复用的目的。Favor composition of objects over inheritance as a reuse mechanism.7、迪米特法则(Law of Demeter, LoD)定义:一个软件实体应当尽可能少的与其他

      3、实体发生相互作用2、创建型设计模式1、简单工厂模式(1)类图(2)优缺点 优点:分离类的创建和使用;客户端只需要知道具体产品类所对应的参数;可以在不修改任何客户端代码的情况下更换和增加新的具体产品类,提高系统灵活性。缺点:工厂类的职责过重;会增加类的个数;不符合开闭原则,扩展困难;由于使用静态工厂方法,难以形成基于继承的等级结构。(3)适用范围工厂类负责创建的对象比较少;客户端只知道传入工厂类的参数,对于如何创建对象不关心。2、工厂方法模式Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses。(1)类图return new ConcreteProduct();ConcreteProductProductConcreteFactory+factoryMethod (). : ProductFactory+factoryMeth

      4、od (). : Product(2)优缺点优点:创建和使用分离;完全符合开闭原则缺点:增加类的个数;增加代码理解难度(3)适用范围一个类不知道它所需要的对象的类;一个类通过其子类来指定创建哪个对象;将创建对象的任务委托给多个工厂子类中的某一个,客户端在使用时可以无须关心是哪一个工厂子类创建产品子类,需要时再动态指定。3、抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为 Kit 模式,属于对象创建型模式。Abstract Factory Pattern: Provide an interface for creating families of related or dependent objects without specifying their concrete classes. (1)类图(2)优缺点优点:创建和使用分离;高内聚低耦合;够保证客户端始终只使用同一个产品族中的对象;符合开闭原则缺点:开闭原则的倾斜性(增加新的工厂和产品族容易,增加新的产品等级结构麻烦)(3)适用范围一个系统不应当依赖于产品类实例如何被创建、组合和表

      5、达的细节,这对于所有类型的工厂模式都是重要的。 系统中有多于一个的产品族,而每次只使用其中某一产品族。属于同一个产品族的产品将在一起使用,这一约束必须在系统的设计中体现出来。系统提供一个产品类的库,所有的产品以同样的接口出现,从而使客户端不依赖于具体实现。4、单例模式单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。 (对象型创建模式)Singleton Pattern: Ensure a class has only one instance and provide a global point of access to it. (1)类图instanceif(instance=null) instance=new Singleton();return instance;Singleton- instance: Singleton-+Singleton ()getInstance (). : Singleton(2)优缺点优点:提供了对唯一实例的受控访问;节约系统资源,提高系统的性能;许可变数目的实例。缺点:扩展困难;违

      6、背了单一职责原则;(3)适用范围系统只需要一个实例对象。客户调用类的单个实例只允许使用一个公共访问点,除了该公共访问点,不能通过其他途径访问该实例。在一个系统中要求一个类只有一个实例时才应当使用单例模式。3、结构型设计模式1、适配器模式适配器模式(Adapter Pattern) :将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。Adapter Pattern: Convert the interface of a class into another interface clients expect. Adapter lets classes work together that couldnt otherwise because of incompatible interfaces. (1)类图Adapter+request ().Target+request ().Adaptee+specificRequest ().ClientspecificRequ

      7、est();(2)优缺点优点:将目标类和适配者类解耦;增加了类的透明性和复用性;符合开闭原则类适配器模式还具有如下优点:由于适配器类是适配者类的子类,因此可以在适配器类中置换一些适配者的方法,使得适配器的灵活性更强。类适配器模式的缺点如下:对于 Java、C#等不支持多重继承的语言,一次最多只能适配一个适配者类,而且目标抽象类只能为抽象类,不能为具体类,其使用有一定的局限。对象适配器模式还具有如下优点:一个对象适配器可以把多个不同的适配者适配到同一个目标,也就是说,同一个适配器可以把适配者类和它的子类都适配到目标接口。对象适配器模式的缺点如下:与类适配器模式相比,要想置换适配者类的方法就不容易。如果一定要置换掉适配者类的一个或多个方法,就只好先做一个适配者类的子类,将适配者类的方法置换掉,然后再把适配者类的子类当做真正的适配者进行适配,实现过程较为复杂。限性,不能将一个适配者类和它的子类都适配到目标接口。(3)适用范围系统需要使用现有的类,而这些类的接口不符合系统的需要。想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。2、组合模

      8、式组合多个对象形成树形结构以表示“整体-部分”的结构层次。 (对象型)Composite Pattern: Compose objects into tree structures to represent part-whole hierarchies. Composite lets clients treat individual objects and compositions of objects uniformly. (1)类图childrenClientComponent+operation ()add (Component c)remove (Component c)getChild (int i).Leaf+operation ().Composite+operation ()add (Component c)remove (Component c)getChild (int i).for(Component child:children) child.operation(); (2)优缺点优点:可以清楚地定义分层次的复杂对象,表示对象的全部或部分层次,使得增加新构件也更

      9、容易;客户端调用简单,客户端可以一致的使用组合结构或其中单个对象;更容易在组合体内加入对象构件,客户端不必因为加入了新的对象构件而更改原有代码。缺点:使设计变得更加抽象;难以对容器中的构件类型进行限制。(3)适用范围在以下情况下可以使用组合模式:需要表示一个对象整体或部分层次,在具有整体和部分的层次结构中,希望通过一种方式忽略整体与部分的差异,可以一致地对待它们。对象的结构是动态的并且复杂程度不一样,但客户需要一致地处理它们。安全组合模式、透明组合模式(父类中有访问管理成员方法)3、外观模式外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。(对象型)Facade Pattern: Provide a unified interface to a set of interfaces in a subsystem. Facade defines a higher-level interface that makes the subsystem easier to use.(1)类图ClientFacadeSubSystemA SubSystemB SubSystemC(2)优缺点优点:屏蔽子系统组件,减少了客户端的对象数目并使得子系统使用起来更加容易;实现了子系统与客户之间的松耦合关系;降低了大型软件系统中的编译依赖性,并简化了系统在不同平台之间的移植过程;只是提供了一个访问子系统的统一入口,并不影响用户直接使用子系统类。缺点:不能很好地限制客户使用子系统类;违背开闭原则(3)适用范围当要为一个复杂子系统提供一个简单接口时可以使用外观模式。客户程序与多个子系统之间存在很大的依赖性。在层次化结构中,可以使用外观模式定义系统中每一层的入口,层与层之间不直接产生联系,而通过外观类建立联系,降低层之间的耦合度。符合单一职责原则、迪米特法则4、代理模式给某一个对象提供一个代理,并由代理对象控制对原对象的引用。 (对象型)Proxy Pattern: Provide a surrogate or

      《16个设计模式-小顾整理》由会员野鹰分享,可在线阅读,更多相关《16个设计模式-小顾整理》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结 2022年家长会心得体会集合15篇
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.