设计模式
文章平均质量分 74
设计模式本是我在大学本科的一门必修课,那时只知道考试一用,无多在乎。现在作为已经入职45天的我来说,与那时的变化只是觉得这个东西很重要,于是乎,做此系列学习笔记。
咖喱东东
程序员菜鸟
展开
-
设计模式之罪 2-17 门面模式
门面模式一、定义三、备忘录模式的应用1. 备忘录模式的优缺点2. 备忘录模式的使用场景3. 备忘录模式的注意事项 门面模式太简单了,也太常见了,举个例子。现在有一个场景是写信,有四步:写信、写信封、装信和邮寄。 为完成这个任务,我们先写一个接口ILetterProcess,描述4个过程: public interface ILetterProcess { //写信 void writeContext(String context); //写信封,地址 void fillEnv原创 2021-09-02 23:56:39 · 176 阅读 · 0 评论 -
设计模式之罪 2-18 备忘录模式
备忘录模式一、定义二、通用代码1. 发起人角色2. 备忘录角色3. 备忘录管理员角色6. 场景类三、实际例子1. 抽象元素2. 具体元素3. 访问者接口4. 访问者实现5. 场景类四、访问者模式的应用1. 访问模式的优点和缺点2. 访问者模式的使用场景3. 最佳实践 一、定义 备忘录模式(Memento Pattern)的定义如下: Without violating encapsulation, capture and externalize an object’s internal state so t原创 2021-09-02 22:39:43 · 321 阅读 · 0 评论 -
设计模式之罪 2-19 访问者模式
访问者模式一、定义二、通用代码1. 抽象元素2. 具体元素3. 抽象访问者4. 具体访问者5. 结构对象6. 场景类三、实际例子1. 抽象元素2. 具体元素3. 访问者接口4. 访问者实现5. 场景类四、访问者模式的应用1. 访问模式的优点和缺点2. 访问者模式的使用场景3. 最佳实践 一、定义 访问者模式(Visitor Pattern)的定义如下: Represent an operation to be performed on the element of an object structure.原创 2021-08-30 09:26:32 · 300 阅读 · 0 评论 -
设计模式之罪 2-20 状态模式
状态模式一、定义二、通用代码1. 抽象状态角色2. 具体状态角色3. 环境角色4. 客户类三、实际例子1. 抽象状态角色2. 具体状态角色3. 环境角色4. 客户类四、状态模式的应用1. 桥梁模式的优点和缺点2. 桥梁模式的使用场景3. 最佳实践 一、定义 解释器模式的定义如下: Allow an object to alter its behavior when its internal state changes. the object will appear to change its class.(原创 2021-08-26 08:34:04 · 182 阅读 · 0 评论 -
设计模式之罪 2-21 解释器模式
解释器模式一、定义二、通用代码1. 抽象表达式2. 终结符表达式3. 非终结符表达式4. 客户类三、桥梁模式的应用1. 桥梁模式的优点和缺点2. 桥梁模式的使用场景3. 最佳实践 一、定义 解释器模式(Interpreter Pattern)的定义如下: Given a language, define a representation for its grammar along with an interpreter that uses the representation to interpret se原创 2021-08-24 09:23:24 · 252 阅读 · 0 评论 -
设计模式之罪 2-22 享元模式
享元模式一、定义二、通用代码1. 抽象享元角色2. 具体享元角色3. 享元工厂三、桥梁模式的应用1. 桥梁模式的优点和缺点2. 桥梁模式的使用场景3. 最佳实践 一、定义 享元模式,即“池技术”的实现。其定义如下: Use sharing to support large number of fine-grained objects efficiently 使用共享对象可以有效地支持大量的细粒度的对象 #mermaid-svg-1dAqPqkEWX2wS5sD .label{font-family:'tre原创 2021-08-22 14:43:08 · 159 阅读 · 0 评论 -
设计模式之罪 2-23 桥梁模式
桥梁模式一、定义二、通用代码1. 实现化角色2. 具体实现化角色3. 抽象化角色4. 具体抽象化角色5. 场景类三、桥梁模式的应用1. 桥梁模式的优点2. 桥梁模式的使用场景3. 最佳实践 一、定义 桥梁模式,也叫桥接模式。其定义如下: Decouple an abstract from its implementation so that the two can vary independently 将抽象和实现解耦,使得两者可以独立的变化 #mermaid-svg-nUUBD8RjLvfrdb8e .l原创 2021-08-21 20:45:37 · 299 阅读 · 0 评论 -
设计模式1-6 开闭原则
开闭原则一、定义 一、定义 开闭原则:对扩展开放,对修改关闭。 英文解释:Software entities like classes, modules and functions should be open for extension but closed for modifications.(软件实体如类、模块和函数应该对扩展开放,对修改关闭) 是其他5种原则的精神领袖。 ...原创 2021-08-21 09:57:30 · 117 阅读 · 0 评论 -
设计模式1-5迪米特法则
迪米特法则一、定义二、举例只和朋友交流朋友之间也有距离三、优点四、最佳实践 一、定义 迪米特法则(Law of Demeter,LoD)也称为最少知识原则(Least Knowledge Principle,LKP):一个对象应该对其他对象有最少的了解。 英文解释:Only talk to your immediate friends.(只与直接的朋友通信) 二、举例 只和朋友交流 情景:老师让体育委员清点全班女生人数,类图如下: 很明显,类Teacher依赖了非朋友类——Girl类,那么问题来了什么是朋原创 2021-08-15 22:39:04 · 148 阅读 · 0 评论 -
设计模式1-4 接口隔离原则
接口隔离原则一、定义二、举例三、优点四、最佳实践 一、定义 接口隔离原则:接口尽量细化,同时接口中的方法尽量少。 英文定义1:Clients should not be forced to depend upon interfaces that they don’t use.(客户端不应该依赖它不需要的接口) 英文定义1:The dependency of one class to another one should depend on the smallest possible interface.(类原创 2021-08-15 21:39:47 · 202 阅读 · 0 评论 -
设计模式1-3 依赖倒置原则
依赖倒置原则一、定义二、举例三、优点四、最佳实践 一、定义 依赖倒置原则(Dependence Inversion Principle, DIP):依赖于抽象,不依赖于具体,即面向接口编程——OOD(Object-Oriented Design,面向对象设计)。 英文原始定义: High level modules should not depend upon low level modules. Both should depend upon abstractions. Abstractions shou原创 2021-08-15 16:15:55 · 217 阅读 · 0 评论 -
设计模式1-2 里氏替换原则
里氏替换原则一、定义二、举例三、里氏替换原则的优点四、最佳实践 一、定义 里氏代换原则(Liskov Substitution Principle, LSP):只要父类能出现的地方子类就可以出现,并且替换为子类不会发生任何错误或异常。 英文定义1:If for each object o1 of type S there is an object o2 of type T such that for all programs P defined in terms of T, the behavior of原创 2021-08-15 11:49:17 · 148 阅读 · 0 评论 -
设计模式1-1 单一职责原则
单一职责原则一、定义二、举例三、单一职责的优点四、最佳实践 一、定义 单一职责(Single Responsibility Principle, SRP):应该有且仅有一个原因引起类的变更。 英文原话解释:There should never be more than one reason for a class to change. PS:定义中的类包括接口、类和方法。 二、举例 下面举出一个错误样例: 应该把用户信息抽取成一个BO(Business Object, 业务对象),把行为抽取成一个Biz(原创 2021-08-14 22:19:34 · 138 阅读 · 0 评论