看《重构与模式》这本书写得(附上《重构与模式》这本书的英文电子版):
1,组合方法(提炼方法的重构)
将方法的逻辑转行成几个同一层面的上的几个步骤
用户可以用这个方法想List实例中添加对象:
public class List....
public void add(Object element)
{
if(!readOnly) (一个条件语句包装整个代码,使用卫哨子句guard clause )
{
int newSize = size + 1;
if(newSize > elements.length)(检查数组容量是否过界)
{
Object[] newElements = new Object[elements.length + 10];(过界则扩大10)
for(int i =0; i< size ; i++)
newElements[i] = elements[i] (再重新赋值)
elements = newElements;
}
elements[size++] = element; (size:表示当前的数组的所到的位置。 当前的add的值赋给下一个)
}
}
方法重构:
pulblic class List.....
private finnal static int GROWN_INCREMENT = 10;
public void add(Object element)
{
if(readOnly) (卫哨子句guard clause)
return;
if(atCapatity())
{
grow();
}
addElement(element);
}
private boolean atCapatity()
{
return (size + 1) > elements.length;
}
private void grow()
{
Object[] newElements = new Object[elements.length + GROWN_INCREMENT];
for(int i =0; i< size ; i++)
newElements[i] = elements[i]
}
private void addElement(Object element)
{
elememts[size++] = element;
}
2,用composite替换隐含树
针对树型结构的重构方法,简化和使用树型结构的复杂度
(1)清晰的树结构也有不清晰的树结构
问题代码
最后的生成结果:
String expectedResult =
"<orders>" +
"<order id='321'>" +
"<product id='f1234' color='red' size='medium'>" +
"<price currency='USD'>" +
"8.95" +
"</price>" +
"Fire Truck" +
"</product>" +
"<product id='p1112' color='red'>" +
"<price currency='USD'>" +
"230.0" +
"</price>" +
"Toy Porshe Convertible" +
"</product>" +
"</order>" +
"</orders>";
(2)应用测试驱动开发来逐步重构composite
a, 识别隐式叶子结点,作为重构和测试驱动的开始。重构为显式的叶子结点。确保显式叶子同隐式一样可用
b, 确保新建的叶子能共享一个统一的接口。
b, 叶子结点能识别隐式双亲。通过第一步生成叶子结点来生成双亲,在调用统一的接口来建立亲子关系。
(3)composite模式适合于树型结构,结点具有相同的属性,具有相似的逻辑。
(4)设计模式的价值,是要理解这样做的思想,为什么这样就要好,已经这些背后的思考的过程。
分享到:
相关推荐
《设计模式与重构.doc》可能会详细讲解重构的原则、步骤和技巧,帮助开发者在保持代码功能不变的情况下优化其内部结构,提升代码可读性和可维护性。 《戏说面向对象程序设计C#版.pdf》则可能是以轻松幽默的方式介绍...
根据描述,这份资料包含了多个部分,包括全英文的影印版、详细的解释以及理论性的DOC文档,为深入学习和理解Java设计模式提供了丰富的资源。 设计模式通常分为三类:创建型、结构型和行为型。创建型模式涉及到对象...
Java 重构设计是提高软件质量、可维护性和可读性的关键步骤。在进行重构时,应当遵循一系列准则和最佳实践,以确保过程的安全和有效性。以下是根据提供的文件内容概述的重构知识点: 1. **安全优先**:在重构关键...
Java JDK中广泛使用了各种设计模式,例如单例模式在许多系统类中,如`java.lang.Runtime`,工厂模式在集合框架中,装饰器模式在`java.io`包中,适配器模式在I/O流中等等。 面向对象设计原则包括开闭原则(对扩展...
Java设计模式综合应用场景,实验报告内含核心代码,三种以上设计模式综合使用场景,图形界面
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在Java中,策略模式通过定义一个策略接口和一系列实现这个接口的具体策略类,使得系统可以在运行时选择并应用不同的策略。这种模式的主要优点是提高了...
`java模式之单例模式.doc`可能会详细解析这些实现方式的优缺点,以及在实际项目中如何选择合适的实现策略。 在Java开发中,这两种设计模式经常被结合使用。例如,我们可以使用工厂模式来创建单例对象,使得获取单例...
Java设计模式分为两大类:创建型模式和结构型模式,它们在J2EE(Java 2 Enterprise Edition)开发中扮演着重要角色。 1. **创建型模式**: - **抽象工厂模式(Abstract Factory)**:抽象工厂模式提供一个创建一...
Java Word控件-Free Spire.Doc for Java_2.0.0是一个强大的库,专为Java开发者设计,用于处理Microsoft Word文档。与Apache POI相比,它提供了更丰富的功能和更简便的API,使得在Java环境中操作Word文档变得更加高效...
- **兼容性**:Free Spire.Doc for Java通常会保持与最新及主流的Java版本兼容,同时也尽可能兼容多种操作系统,如Windows、Linux和Mac OS。 4. **库文件**: - `lib`目录:包含库的JAR文件,这是在Java项目中...
【Java 概要设计方案】 1. **引言** - 目的:本文档旨在为软件开发团队提供简易搜索引擎的设计方案,确保团队成员对项目有清晰的理解。 - 背景:随着搜索引擎技术的发展,如Google和百度,搜索引擎在中国互联网...
基于java开发的局域网监听软件的设计.doc 基于java开发的局域网监听软件的设计.doc 基于java开发的局域网监听软件的设计.doc 基于java开发的局域网监听软件的设计.doc 基于java开发的局域网监听软件的设计.doc 基于...
在Java编程中,设计模式同样扮演着关键角色,可以帮助开发者写出可扩展、可维护的高质量代码。 针对设计模式的学习,有一种观点认为不必过分神化它。设计模式并非通过理论学习就能完全掌握的,而是在实际开发过程中...
设计模式是软件工程中的一种最佳实践,它是在特定上下文中为解决常见问题而形成的可复用解决方案。...通过阅读提供的"23种设计模式的代码版(Java).doc"文档,你可以深入理解这些模式在实际项目中的应用和实现方式。
实测解决Spire.Doc for Java各版本需要注册的问题,全功能无限制,去水印,导出的word文件没有Evaluation Warning: The document was created with Spire.Doc for JAVA,不受注册码限制
1___设计模式介绍.doc 这份文档可能涵盖了设计模式的基本概念和分类。设计模式通常分为三类:创建型模式(如单例、工厂方法、抽象工厂、建造者、原型),结构型模式(如代理、装饰器、适配器、桥接、组合、外观、享...
java常用设计模式-工厂模式的实现.doc
Spire.Doc forJava 13无限制,功能强大的word处理jar包,已测试,完美解决,使用前先将jar包按照maven坐标路径放到本地仓库,不然maven会找不到jar
以下是关于创建型设计模式的一些详细说明: 1. 单一职责原则:这一原则主张一个类或模块应该只做一件事情,以提高代码的专注度,降低复杂性。当一个类承担过多职责时,如果其中一个职责发生变化,可能会对其他职责...
在Java等面向对象编程语言中,工厂模式被广泛应用,因为它能够提高系统的灵活性和可扩展性。 工厂模式主要有以下几个关键角色: 1. **产品接口(Product)**:定义了所有创建的对象的公共接口或抽象类,例如文档中...