设计模式学习——开始创建模式
来源:互联网 发布:java二维数组的定义 编辑:程序博客网 时间:2024/06/08 17:46
简单工厂模式
当需要创建大量的产品时,并且这些产品具有相同的接口,那个我们可以通过工厂方法来进行创建。
比如我们有两个类
public class College {
public void study() {
System.out.println("我在大学学习!”);
}
}
public class HighSchool {
public void study() {
System.out.println("我在高中学习!");
}
}
这两个类都有共同的方法study(),因此可以将其进行抽取出来。
public interface Student {
public void study();
}
所以这两个类可以进行如下改装:
public class College implements Student {
@Override
public void study() {
System.out.println("我在大学学习!");
}
}
public class HighSchool implements Student {
@Override
public void study() {
System.out.println("我在高中学习!");
}
}
这样一个简单的接口实现类,就改装出来了。上面我们提到工厂,那么现在就看看用工厂获取对象。
public class StudyFactory {
public Student studyStyle (String style) {
if("college".equals(style)) {
return new College();
} else if("high school".equals(style)) {
return new HighSchool();
} else {
System.out.println("情输入正确的身份!“);
return null;
}
}
}
这样一通写下来后,我们就会发现一个问题,如果我想创建一个学生,还得看看传什么字符串,即使这是自己写的,恐怕过一段时间,你也不知道该传什么字符串,更别说其他开发人员来调用,还得看源码,显然,这段代码是脏代码。那么我们再来看看下面这种创建方式:
public class StudyFactory {
public College buildCollege() {
return new College();
}
public HigeSchool buildHighSchool() {
return new HighSchool();
}
}
这样做确实改善了很多,但是想偷懒的我们可能又会觉得,每次调用还得创建一个对象,而且这个工厂对象创建出来后,调用一次就没用了,为此特地创建一个对象,感觉有点不值得,还是很麻烦,这时可能有的小伙伴已经想到了静态。接下来我们看看下面这种优化方式:
public class StudyFactory {
public static College buildCollege() {
return new College();
}
public static HighSchool BuildHighSchool() {
return new HighSchool();
}
}
这样看起来是不是好多了,这种方式起始也是我们大多数采用的工厂创建方式——静态工厂方法模式。
阅读全文
0 0
- 设计模式学习——开始创建模式
- 开始学习设计模式
- 开始学习设计模式
- 设计模式——开始
- 【设计模式学习笔记】设计模式-开始
- 设计模式学习笔记——创建模式
- 设计模式学习(二) — 创建型模式
- 设计模式学习开始篇
- 开始设计模式的学习
- 设计模式——创建型模式
- 设计模式——创建型模式
- 设计模式——创建型模式
- 设计模式——创建型模式
- 设计模式——创建模式
- 设计模式——创建型模式
- 设计模式——创建型模式
- 设计模式总结—创建型模式
- 设计模式1—创建型模式
- MySQL性能优化
- 双击退出APP,版本更新,字符串工具类,分享到更多
- HttpServletRequest类,方法getAttribute()和getParameter()有何区别
- CentOS下安装Redis3集群
- java继承问题
- 设计模式学习——开始创建模式
- JSON导出Execl
- 从刑侦学角度剖析烛光斧影之作案动机
- 面试过阿里等互联网大公司,我知道了这些套路 | 掘金技术征文
- 浅谈LOG日志的写法
- php设置时间戳
- 安装Oracle注意事项
- Intel e1000e网卡Makefile实例
- 设计模式——迭代器与组合模式(一)