设计模式
文章平均质量分 83
呆东
小菜鸡也有大梦想,努力拼搏,就是为了给那些曾经看轻你的人一记响亮的耳光
展开
-
提高思想,写出好代码
内功心法要想写出好的代码,首先我们要有这个认知。在写代码的时候,不能以完成功能需求为目标。个人认为以完成功能需求为目标,永远也写不出优雅的代码,只能是一个需求搬运工。有的时候我们需要多多思考,在看到前人代码时,是否有可以优化的地方,是否有更优雅的写法。从心里不要仅仅把写代码是简单的完成工作,这样只是简单的重复劳动,永远也不会有进步。之前看过一句觉得说的特别好,你写的每一行代码,都是你的名片。 我认为写好代码的第一步,一定是有这个想法,有了想法,才能不是被动的完成任务去写你的代码。人没有梦想和咸鱼有什么区别原创 2021-03-07 15:28:01 · 911 阅读 · 2 评论 -
如何写出好代码
要想写出好代码,我们首先要知道,什么样的代码是好代码,代码的批判标准有哪些?1、可维护性(maintainability):易维护代码:在不破坏原有代码设计、不引入新的 bug 的情况下,能够快速地修改或者添加代码;代码不易维护:修改或者添加代码需要冒着极大的引入新 bug 的风险,并且需要花费很长的时间才能完成。2、可读性(readability):软件设计大师 Martin Fowler 曾经说过:“Any fool can write code that a computer can unde原创 2020-08-10 21:43:29 · 468 阅读 · 0 评论 -
设计模式(十二)—— 代理模式
一、含义为另一个对象提供一个替身或占位符以访问这个对象。个人理解就是,在调用真正的对象之间,通过调用这个对象的代理,可新增新的功能。二、要点1.代理模式是为一个对象提供一个代表,以便控制客户对向真实对象的访问。2.代理在结构上类似装饰者,但是目的不同;装饰者模式是为对象添加新的行为,代理则是控制访问。三、实战分析代理模式首先来看一下代理模式的类图:在这里我们直接分析...原创 2018-12-13 22:14:08 · 136 阅读 · 0 评论 -
设计模式(十一)—— 状态模式
一、含义允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。也就是说当一个对象有许多状态的时候,我们可以把每个对象抽离出来作为一个具体的类。二、要点1.状态模式允许一个对象基于内部状态而拥有不同的行为。2.通过将每个状态封装进一个类,我们把以后需要做的任何改变局部化了。3.使用状态模式通常会导致设计中类的数目大量增加。三、实战分析外观模式首先看一下状态模式...原创 2018-12-03 23:08:14 · 196 阅读 · 0 评论 -
设计模式(一)—— 策略模式
一、含义策略模式定义了算法族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。二、设计模式的原则1.封装变化。2.多用组合,少用继承。3.针对接口编程,不针对实现编程。三、实战分析策略模式1.需求:设计一款游戏,模拟角色类游戏,游戏中会出现各种各样的人,人会说话,人会吃饭; 这时我们会设计一个人的超类,其他角色都会继承这个人的超类。...原创 2018-10-18 23:53:20 · 130 阅读 · 0 评论 -
设计模式 (二) —— 观察者模式
一、含义在对象之间定义一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象都会收到通知,并自动更新。二、设计原则1.封装变化。2.多用组合,少用继承。3.针对接口编程,不针对实现编程。4.为交互对象之间的松耦合设计而努力。三、要点1.观察者模式定义了对象之间一对多的关系。2.主题(也就是可观察者)用一个共同的接口来更新观察者。3.观察者和可观察者之间用松...原创 2018-10-27 19:32:38 · 173 阅读 · 0 评论 -
设计模式(三)—— 装饰者模式
一、含义:动态地将责任附加到对象上。想要扩展功能,装饰着提供有别于继承的另一种选择。二、要点:1.使用装饰者模式,可以允许行为被扩展,而无须修改现有的代码。2.装饰者模式意味着一群装饰者类,这些类用来包装具体组件。3.装饰者类反映出被装饰的组件类型(事实上,它们具有相同的类型,都经过接口或者继承实现)。4.装饰者可以在被装饰者的行为前面或后面加上自己的行为,甚至将被装...原创 2018-11-07 23:00:17 · 210 阅读 · 0 评论 -
设计模式(四)—— 工厂模式
一、含义工厂模式包含两个方式:一个是抽象工厂模式,一个是工厂方法模式。抽象工厂模式:提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。工厂方法模式:定义一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类中。二、要点1.工厂模式都是用来封装对象的创建。2.工厂方法使用继承:把对象的创建委托给子类,子类实现工厂方法来创建...原创 2018-11-17 14:50:08 · 278 阅读 · 0 评论 -
设计模式(五)—— 单例模式
一、含义在一个系统中,确保一个类只有一个实例,并提供一个全局访问点,这个类在系统中是独一无二的。二、要点1.单例模式确保程序中最多只有一个这个类的实例。2.在java中实现单例模式需要把构造器私有化,并提供一个静态方法和静态变量。三、分析单例模式首先来看一下最经典的单例模式的代码如下:public class Singleton { //利用一个静态变量来保...原创 2018-11-19 22:24:28 · 104 阅读 · 0 评论 -
设计模式(六)—— 命令模式
一、含义将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。二、要点1.命令模式可以让发出请求的对象和执行请求的对象之间进行解耦。2.发出命令的对象和执行命令的对象之间是通过命令对象进行沟通的,命令对象封装了接收者的一个或一组动作。3.调用者通过调用命令对象发出请求,会使接受者的动作被调用。三、实战分析命令模式首先让我们来...原创 2018-11-24 16:43:54 · 181 阅读 · 0 评论 -
设计模式(七)—— 适配器模式
一、含义将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间,也就是说适配器模式是在原有一个类的基础上,在不改变这个类的代码时,新建一个类将其原来的类,进行封装改变,以符合新的需求。二、要点1.当需要使用一个现有的类而其接口并不符合你的需要时,就使用适配器。2.适配器模式有两种形式:对象适配器和类适配器。类适配器需要用到多重继承来实现,所以在java中...原创 2018-11-25 14:18:34 · 367 阅读 · 1 评论 -
设计模式(八)—— 外观模式
一、含义提供一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。也就是当客户需要调用程序多个接口完成一件事情时,那么就可以多个接口调用的方法,封装在一个接口里提供给客户使用。二、要点1.当需要简化并同意一个很大的接口或者一群复杂的接口时,使用外观模式。2.外观模式将客户从一个复杂的子系统中解耦。3.实现一个外观模式,需要将子系统组合进外观中,...原创 2018-11-27 00:02:23 · 117 阅读 · 0 评论 -
设计模式(九)—— 模版方法模式
一、含义在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。通俗讲,就是当你的程序中,有多个类,方法是相同的,只是具体实现有差异时,就可以把这多个类使用模板方法模式进行封装。二、要点1.模板方法只定义了算法的步骤,把这些步骤的具体实现延迟到子类中进行。2.模板方法的抽象类可以定义具体方法、抽象方法和钩子;...原创 2018-11-28 10:20:41 · 171 阅读 · 0 评论 -
设计模式(十)—— 迭代器模式
一、含义提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。当我们在项目中需要遍历不同的集合、数组时,可以考虑使用迭代器模式,提供一个统一的遍历方法。二、要点1.迭代器将遍历聚合的工作封装进一个对象中。2.迭代器提供一个通用的接口,让我们遍历聚合的项,当我们编码使用聚合的项时,就可以使用多肽机制。3.迭代器允许访问聚合的元素,而不需要暴露它的内部结构。三、...原创 2018-12-02 13:48:54 · 135 阅读 · 0 评论