1、 模式和反模式的模板
模式语言(或模式分类)是一组相互关联的模式的集合。每种模式都采用一致的修辞结构——模式模板,使用这种修辞结构来表示对模式的说明具有很好的逻辑性。业界已经形成了很多通用的模板。
2、 使用反模式的建议
对软件项目的改进最好通过增量的方式进行,就如《重构》一书中所建议的那样子。反模式的意图是要建立对问题的警觉,使用反模式,你可以在机能不良的实践导致负面后果时清楚地看到问题,反模式给有害的实践赋以鲜明的名称和特点,让你可以迅速检测到它们的存在,然后避免或解决它们。
对替代方法的了解是解决问题的关键之一。
3、 编写新反模式
(1)设计模式开始于一个多次出现的反感。设计模式通常是自底而上编写的;也就是说,设计模式开始于一个多次出现的反感,然后该模式的编写者会添加上下文本经和影响力量。用来说明这些北京和力量的文字经过了仔细的修改,以便引导你得到惟一的解决方案。
(2)反模式开始于一个多次出现的问题。反模式是自顶而下编写的。在当前上下文环境中,该设计或实践通常具有显著的负面后果 ... ...
————————软件开发性反模式——————————
开发软件开发性反模式的关键目标是描述有用的软件重构形式。良好的软件架构对系统的扩充和维护是必要的。软件开发是一项无序的活动,因此系统实现结构往往会偏离通过架构、分析和设计而规划出的结构。
A、 正规重构变化
包括超类抽象、条件消除和聚合抽象。
B、 开发性反模式摘要
B.1: The Blob(胖球)一个对象承担了大量职责
B.2: Continus Obsolescence(持续过时):因开发人员难以跟上软件新版本的问题
B.3: Lava Flow(岩浆流)死代码和被遗忘的设计会被冻结在不断变化的设计中
B.4: Ambiguous Viewpoint(模糊视角),模型常常没有澄清该模型所表达的视角
B.5: Functional Decomposition(功能分解),
B.6: Poltergeist(恶作剧鬼),该反模式是指那些职责和有效生命周期都很有限的类。它们常常被用于启动其他对象的处理,重构方案中将这些责任重新分配给具有更长生命的对象来消除这些Poltergeist
B.7: Boat Anchor(船锚),指在当前项目中没有起到有益作用的那些软件或硬件
B.8: Golden Hammer(金锤),指把一种熟悉的技术或概念强迫性地应用于许多软件问题
B.9: Dead End(死胡同),对一个可复用构建进行修改后它不再受供应商的支持,那么对它的修改就会形成死胡同。
B.10: Spagehetti Code(面条代码),即兴生成的软件导致难以扩展和优化代码
B.11: Input Kludge(拼凑拼凑),未能通过直接行为测试的软件可能就是Input Kludge的例子
B.12: Walking through a Minefield(穿越雷区)
B.13: Cut-and-Paste Programming(剪贴编程):通过剪贴语句形成的代码复用会导致显著的维护问题
B.14: Mushroom Management(蘑菇管理),建立中间层
分享到:
相关推荐
### 韩顺平_Java设计模式笔记知识点详解 #### 1. Java设计模式内容介绍 ##### 1.1.1 先看几个经典的面试题 - **原型设计模式问题** - **UML类图**:原型模式的核心在于定义了一个`Prototype`接口,该接口声明了...
在Java中,可以通过重写`clone()`方法实现深拷贝,或者利用序列化和反序列化进行深拷贝。Spring框架中,`prototype`作用域的bean创建就是原型模式的应用,例如`...
2. 抽象工厂模式:提供一个接口用于创建相关或依赖对象的家族,而不需要明确指定具体类。 3. 建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 4. 原型模式:通过复制现有...
软件体系结构与设计模式笔记样本 软件体系结构是指软件系统的组织方式和结构,它是软件设计的核心概念。软件体系结构涉及构件、连接件和约束三个要素,构件是可预制和可重用软件部件,是构成体系构造基本计算单元或...
2. **单例模式**: 单例模式确保一个类只有一个实例,并提供全局访问点。这种模式常用于控制资源的共享,如数据库连接池。实现单例有多种方式,如饿汉式(静态常量)、懒汉式(线程不安全)、双重检查锁定(DCL)...
笔记中列出了饿汉式、懒汉式、双重检测锁式、静态内部类和枚举类实现单例的方法,并探讨了防止反射和反序列化破解单例的方法。 2. 工厂模式(Factory Pattern):包括简单工厂模式、工厂方法模式和抽象工厂模式,...
第五组的差值与排除是反值,是相片的负片,使用时一般用黑白色做前背景色,差值的程度比排除大;第六组是基于人眼的,HSB。 背后模式 背后模式是画笔工具的一种模式,将画的颜色都在图层像素后面,即使用后要看到...
这款应用利用了Android平台上的先进技术和最佳实践,如RxAndroid、MVP(Model-View-Presenter)架构模式以及Dagger2依赖注入框架,旨在提供一个高效、直观且易于使用的笔记记录体验。 1. **Material Design**: ...
### Struts2学习笔记之文件上传与Ajax开发 #### Struts2文件上传 **文件上传简介** 文件上传是Web应用中常见的功能之一,Struts2框架内置了对文件上传的支持,使得开发者能够轻松地实现这一功能。为了确保文件...
2. 五浪模式是市场行为的关键模式之一,它由三个真正影响有向运动的浪和两个逆势休整期组成。 3. 波浪进展方式有两种类型:驱动方式和调整方式。驱动浪有一个五浪结构,而调整浪有一个三浪结构或其变体。 4. 驱动浪...
单例模式是软件设计模式中的一种,它的...在实际开发中,选择哪种单例模式取决于具体需求,例如对性能的要求、是否需要延迟初始化以及是否考虑反序列化安全。了解并熟练掌握这些单例模式有助于编写高效、可靠的代码。
狂神说笔记将涵盖JSON的序列化与反序列化,并讲解与Java对象之间的转换。 9. **Tomcat服务器**:作为JavaWeb的常用应用服务器,Tomcat的安装、配置、部署以及优化技巧也是学习的重要部分。 10. **安全机制**:包括...
12. **设计模式**:讲解常用的23种设计模式,如单例、工厂、装饰器、代理、观察者等,以及它们在实际开发中的应用。 13. **Java 8及更高版本的新特性**:如Lambda表达式、Stream API、Optional类、日期时间API的...
在VMP(Virtual Machine Protect,虚拟机保护)的学习笔记中,这个过程主要涉及到两个关键结构体:struct_VmFunctionAddr(特殊Opcode)和struct_DisassemblyFunction(基础Opcode)。 【Vmp_AllDisassembly函数】...
2. **单例模式**:单例模式确保一个类只有一个实例,并提供全局访问点。这样可以控制资源的使用,比如线程池、缓存或者对话框等。实现时需防止反序列化和反射创建多个实例。 3. **观察者模式**:行为型设计模式,它...
斯坦福大学2014年的机器学习课程是机器学习领域里极具影响力的课程之一,本课程内容广泛覆盖了机器学习、数据挖掘、统计模式识别等相关主题。以下是对该课程的个人笔记中涉及知识点的详细解读。 机器学习是人工智能...
本课程还将使用大量的案例研究,您还将学习如何运用学习算法构建智能机器人(感知,控制),文本的理解(Web搜索,反垃圾邮件),计算机视觉,医疗信息,音频,数据挖掘,和其他领域。 机器学习的主要应用包括自动...
本文档是小小明个人笔记,涵盖了正则表达式的各个方面,包括各种模式、分组、断言、匹配、查找、替换和切割等。文档中提供了详细的正则匹配规则表,涵盖了基本字符规则、预定义字符集、常用字符集、数量词、边界匹配...
通过对学习算法的理解,可以实现复杂的系统和应用,比如智能机器人感知环境并作出决策、实现网络搜索和反垃圾邮件系统、改进医疗诊断等。 课程的讲授者是吴恩达(Andrew Ng),他是著名的机器学习和人工智能专家。...
10. **设计模式**:单例模式、工厂模式、观察者模式等设计模式是面试中常考的内容,它们是解决特定问题的成熟方案。 11. **JVM**:理解Java虚拟机的工作原理,如类加载机制、内存模型(堆、栈、方法区等)、垃圾...