在面向对象编程语言中一般都会有这样的概念,比较容易混淆。一般来说如果换种说法的话就比较容易明白。重构可以说是覆盖,用覆盖一词来讲就比较清楚。在面向对象的一个特性--继承中就表现出重构的意思。
目前创新互联建站已为1000多家的企业提供了网站建设、域名、网络空间、网站运营、企业网站设计、海兴网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
重构,就是继承于父类方法的子类将子类的方法重写,方法名及参数完全相同,就是有相同的声明,但是实现不一致或完全不同。这样如果对面向对象理解比较深刻的话,就清楚重构正是面向对象编程的一大特性。
当软件工程师从事软件开发时,在时间比较紧的情况下,通常需要让软件最先上线,然后在后期工作中慢慢重新配置和调整,以替换由于时间不足而留下的漏洞。那么在进行调整的过程中,有什么需要了解呢?其中最重要的是心态、技巧和技术三个方面。在学习电脑培训的过程中,还需要掌握更多的问题。
一、关于心态
在任何项目的实践中,心态问题是最重要的,其次就是技术问题。为什么心态问题是最重要的呢?因为对于10年以上的旧功能模块,最复杂的功能模块实际上是业务逻辑,而不是技术实现。因此,对于旧系统的重建,需要整理模块中大规模累积的业务逻辑,这本身就为重构提供了无形的压力。与核心业务模块相结合,较少的业务逻辑将导致在线收入减少,最终导致程序员的大量时间付出。这一系列背景使得重构过程中的心理压力变得更大。
重构项目的最佳方法是仔细澄清所有业务逻辑,然后使用思维来绘制图片,这样您就可以清楚地了解过去所有的业务逻辑。清晰的业务逻辑,对于后续系统重新设计和编码有很大的帮助,并且还是角色的决定性部分。
二、关于技巧
重构的经验和技巧远比技术实力重要,因为经验可以减少许多不必要的麻烦。在我说出自己的想法之前,我想问一个问题:如果在重构的过程中遇到一个问题,进行处理会让项目更好,但是不解决也没有太大的影响,你会如何去做呢?在这种情景下,丽江丽江北大青鸟建议,最好是不做,在不影响重构的目标的情况下,能不做最好是不做,这并不是懒惰,而是你永远不知道会有多大的坑在等着你。
三、关于技术
技术是最后一步,但是并不是最重要的一步,至少在我进行重构的过程中,由于我的心态或缺乏技巧,我基本上能够完成了60%的工作。在我的项目中重构的技术能够在不到10%的时间内完成。重构技术实际上更多地是使用设计模式以简洁的代码呈现复杂的业务逻辑。简而言之,它是使用设计模式来承载复杂的业务逻辑并使编写的代码尽可能简洁。
在进行重构需要更多测试,主要是对业务的深刻理解和对抽象思维的进一步使用。如果业务是深入和抽象的,那么可以选择丽江北大青鸟进行学习设计模式。如果是相反的话,就没有办法做到这一点。
张小喜告别996 实现高效编程 减少开发压力 开启Java高效编程之门(完整版高清视频)百度网盘
链接:
提取码: aizj 复制这段内容后打开百度网盘手机App,操作更方便哦
若资源有问题欢迎追问~
先了解再做项目!
软件项目重在设计,如果没有一个结构化、系统化的设计就开始项目开发,是不明智的,到最后可能会变成一个庞大、复杂、难于维护的境地,而等项目完成了,在用设计模式重构,还会增加软件测试工作量,对于之前的内容都要全部重新测试,浪费资源,得不偿失。
对于设计模式的学习,推荐一本经典书籍《软件秘笈-设计模式那点事》,相信会对你有帮助的!祝你早日学会设计模式!
//Platform.java
public class Platform {
/**
* @author lusong
*/
private String brandName;
private String model;
public Platform(String bString,String mString) {
brandName=bString;
model=mString;
}
public String getBrandName() {
return brandName;
}
public String getModel(){
return model;
}
}
//ShiXian.java,其中的getList()方法返回你要求的东东
//不知道合不合你的胃口
import java.util.*;
public class ShiXian {
ArrayListPlatform PlatformList=new ArrayListPlatform();
//用于包含型号的名称,用于验证重复,在getLIst方法中使用,因为内置类不能访问方法的局部变量所有在此定义方法中的变量
ListString arrayList=new ArrayListString();
public ShiXian() {
//向该集合中添加成员,型号之间用逗号隔开
PlatformList.add(new Platform("诺基亚","7210,5530,2120"));
PlatformList.add(new Platform("摩托罗拉","V3,L6"));
PlatformList.add(new Platform("诺基亚","N70,N73,N95"));
PlatformList.add(new Platform("摩托罗拉","V4,L7"));
PlatformList.add(new Platform("摩托罗","V4,L7"));
PlatformList.add(new Platform("摩","V4,L7"));
PlatformList.add(new Platform("摩","V4,L7"));
//你可以随意添加成员,注意型号之间用逗号隔开
}
//你的要求是返回一个包含所有品牌的List,每个List项为一个包含型号的List
public ListArrayListString getList(){
//用于最终返回结果的List
ListArrayListString list=new ArrayListArrayListString(){
//重写toString()方法,便于显示手机名称
@Override
public String toString() {
int i=0;
// TODO Auto-generated method stub
StringBuilder stringBuilder=new StringBuilder();
for (Iterator iterator = this.iterator(); iterator.hasNext();) {
ArrayListString arrayList1 = (ArrayListString) iterator.next();
stringBuilder.append(arrayList.get(i));
stringBuilder.append("的型号为:");
i=i+1;
stringBuilder.append(arrayList1.toString());
}
return stringBuilder.toString();
}
};
for (Iterator iterator = PlatformList.iterator(); iterator.hasNext();) {
Platform platform=(Platform)iterator.next();
if (arrayList.contains(platform.getBrandName())) {
//该手机已经存在,只用添加型号,并且验证是否重复
String[] strings=platform.getModel().split(",");
ArrayListString arrayList3=list.get(arrayList.indexOf(platform.getBrandName()));
for (int i = 0; i strings.length; i++) {
if (!arrayList3.contains(strings[i])) {
arrayList3.add(strings[i]);
}
}
}
else {
//该手机还不存在,要添加该手机,并添加型号
arrayList.add(platform.getBrandName());
ArrayListString arrayList3=new ArrayListString();
String[] strings=platform.getModel().split(",");
for (int i = 0; i strings.length; i++) {
arrayList3.add(strings[i]);
}
list.add(arrayList3);
}
}
return list;
}
public static void main(String[] args) {
System.out.println(new ShiXian().getList());
}
}