设计模式(知识点2)

1.真实世界代码中看到模板方法模式的许多变体,不要期待它们全都是一眼就可以被你认出的。

2.策略模式和模板方法模式都封装算法,一个用组合,一个用继承。

3.工厂方法是模板方法的一种特殊版本。

4.内聚(cohesion),它用来度量一个类或模板紧密地达到单一目的或责任。当一个模板或一个类被设计成只支持一组相关的功能时,我们说它具有高内聚;反之,当被设计成支持一组不相关的功能时,我们说它具有低内聚。

内聚是一个比单一责任原则更普遍的概念,但两者其实关系很密切的,遵守这个原则的类容易具有很高的凝聚力,而且比背负许多责任的低内聚类更容易维护。

5.把策略模式想成除了继承之外的一种弹性替代方案,如果你使用继承定义一个类的行为,你将被这个行为困住,甚至要修改它都很难。有了策略模式,你可以组合不同的对象来改变行为。

6.把状态模式想成是不用在context中放置许多条件判断的替代方案,通过将行为包装进状态对象中,你可以通过在context内简单的改变状态对象来改变context的行为。

7.工厂模式:工厂方法用来处理对象的创建,并将这样的行为封装在子类中。这样,客户程序中关于超类的代码就和子类对象创建代码解耦了。

8.命令模式:当需要将发出请求的对象和执行请求的对象解耦的时候,可以使用命令模式。

接收者存在的必要性(解耦):一般来说,我们尽量设计“傻瓜”命令对象,它只知道调用一个接收者的行为。然而许多“聪明”的命令对象会实现许多逻辑,直接完成一个请求,这样一来,调用者和接收者之间的解耦程度比不上“傻瓜”命令对象。

9.适配器模式的意图:"改变"接口符合客户的期望

10.外观模式的意图:提供一个子系统简化接口

11.装饰者可以在所委托被装饰者的行为之前与/或之后,加上自己的行为,以达到特定的目的

12.设计原则

找出程序中会变化的方面,然后将其和固定不变的方面相分离

在观察者模式中,会改变的是主题的状态,以及观察者的数目和类型。用这个模式,你可以改变依赖于主题状态的对象,却不必改变主题。这就叫提前规划!

针对接口编程,不针对实现编程

主题与观察者都使用接口:观察者利用主题的接口向主题注册,而主题利用观察者接口通知观察者。这样可以让两者之间运作正常,又同时具有松耦合的优点。

多用组合,少用继承

观察者模式利用“组合”将许多观察者组合进主题中。对象之间的这种关系不是通过继承产生的,而是在运行时利用组合的方式而产生的。

13.组合模式以单一责任设计原则换取透明性

设计都不免需要折中:在抽象和速度之间取舍,在空间和时间之间平衡,[ 代码应该如同晚霞中的莲花一样地关闭(免于改变),如同晨曦中的莲花一样地开放(能够扩展)]

时间: 2024-08-22 13:27:08

设计模式(知识点2)的相关文章

扫清 Android 面试障碍--面试前的准备及必刷面试题

又准备要去面试了吗? 来来来,给你点干货建议. 磨刀不误砍柴工, 面试的时间一般只有几个小时不到,所以做好充分准备会极大提高你的成功率.面试的要点分: 面试前的准备和面试中的注意事项,接下来先来说说面试前的准备. 面试前准备 毋庸置疑,求职者在面试之前必须做好充足的准备,我认为有以下几点是重中之重: 完善简历,以及对简历内容做充分准备 可以说简历内容不在于多而在于精,尽量让每个字都有信息量,而且千万要中肯,比如说对于三年以内工作经验的,还是不要用「精通」这两个字了,会让面试官觉得你很浮夸. 坦率

设计模式常见面试知识点总结(Java版)

设计模式 这篇总结主要是基于我设计模式系列的文章而形成的的.主要是把重要的知识点用自己的话说了一遍,可能会有一些错误,还望见谅和指点.谢谢 更多详细内容可以到我的cdsn博客上查看: https://blog.csdn.net/a724888 最后,如果想要更好地完成这部分内容的学习,建议大家还是去看一下原文. 创建型模式 创建型模式 创建型模式的作用就是创建对象,说到创建一个对象,最熟悉的就是 new 一个对象,然后 set 相关属性.但是,在很多场景下,我们需要给客户端提供更加友好的创建对象

设计模式常见面试知识点总结

设计模式 这篇总结主要是基于我设计模式系列的文章而形成的的.主要是把重要的知识点用自己的话说了一遍,可能会有一些错误,还望见谅和指点.谢谢 更多详细内容可以到我的cdsn博客上查看: https://blog.csdn.net/a724888 最后,如果想要更好地完成这部分内容的学习,建议大家还是去看一下原文. 创建型模式 创建型模式 创建型模式的作用就是创建对象,说到创建一个对象,最熟悉的就是 new 一个对象,然后 set 相关属性.但是,在很多场景下,我们需要给客户端提供更加友好的创建对象

Javascript知识点记录(三)设计模式

Javascript设计模式记录,这个方面确实是没写过,工作中也没有用到js设计模式的地方. 单例模式 保证一个类仅有一个实例,并提供一个访问它的全局访问点.例如:线程池,全局缓存,登录浮窗. 首先我们需要把单例的逻辑代码单独提取,然后使用惰性单例的方式,也就是返回方法.只有在点击的时候,才会进行执行. javascript的单例,跟类不一样.无需创建多余的构造函数这些,直接创建全局变量即可. !(function () { //管理单例的逻辑代码,如果没有数据则创建,有数据则返回 var ge

C/C++ 知识点---设计模式

在软件工程中,设计模式用来描述在各种不同情况下,要怎么解决问题的一种方案.面向对象设计模式通常以类或对象来描述其中的关系和相互作用,是软件“设计”层次上的问题.使用设计模式可提高代码的重用性和可靠性,使代码更容易被他人理解,使代码编制真正工程化. 一般将设计模式分为三种类型,共23种:1.创建型模式抽象工厂模式(Abstract Factory):为一个产品族提供一系列相关或相互依赖对象的接口,当需要该产品族某一系列时,可以从抽象工程中选出相应的系列创建一个具体的工程类.工厂模式(Factory

知识点1-3:MVC设计模式

MVC代表模型-视图-控制器(Model-View-Controller),这是一种在Web开发领域非常流行的设计模式.可以在同一个应用程序中混合使用MVC和Web Form页面,它们都是基于ASP.NET平台之上的. 1.MVC模式 模型(Model):建立软件所围绕的领域,建立领域模型.例如,博客,模型可能是帖子和评论. 视图(View):模型的可视化表示.例如表现博客帖子的HTML. 控制器(Controller):提供视图和模型之间关联的协调程序.控制器负责处理输入.对模型进行操作,并决

《JavaScript设计模式与开发实践》知识点笔记

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "PingFang SC" } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "PingFang SC"; min-height: 25.0px } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Songti SC"; c

「每天一个知识点」精讲设计模式面试专题

前言: 设计模式的分类 设计模式分为三类 创建型设计模式与对象创建有关包括单例模式,工厂方法模式,抽象工厂模式,建造者模式,原型模式 结构型设计模式结构性设计模式是从程序的结构上解决模块之间的耦合问题,包括适配器模式,代理模式,装饰模式,外观模式,桥接模式,组合模式和享元模式 行为型设计模式主要处理类或对象如何交互及如何分配职责,包括策略模式,模板方法模式,观察者模式,迭代器模式,责任链模式,命令模式,备忘录模式,状态模式,访问者模式,中介模式,解析器模式 (更多完整项目下载.未完待续.源码.图

js常见知识点3.面向对象之继承、设计模式

一.面向对象的三大特征 建议回复: 封装:屏蔽内部细节.调用外部接口实现对应功能(函数调用) 继承:子类继承父类中的属性和方法 多态(js中不存在多态的概念) 二.继承 建议回复: 继承:子类继承父类中的属性和方法 , 这些属性和方法在子类中不需要实现过程 继承的种类:  单继承:一个子类只拥有一个父类 多继承:一个子类可以拥有多个父类 三.继承的方式及实现过程 建议回复: 1.继承方式一.通过改变构造函数(父类)的执行环境 ---在子类中添加一个特殊属性,这个属性值指向父类