设计模式学习——开始创建模式

    简单工厂模式

当需要创建大量的产品时,并且这些产品具有相同的接口,那个我们可以通过工厂方法来进行创建。
比如我们有两个类
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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值