萧氏一族从古至今每三年举行一次编程大比,为的就是在激励家族子弟加快编程功法的修炼,并且通过比赛筛选出家族中的天才,从而对这些天才进行重点培养。
遥想萧炎十岁之前也曾参加过一次家族编程大比,并且在比赛中击败了无数年龄大于自己的族中天骄,极负萧氏第一天才盛名。之后不久萧炎便由天才成为人人不齿的废材,沉寂了好几年。
这次的家族编程大比,萧炎相信自己能够取得很好的成绩,但是对于能否夺得大比第一,他还是没有多大把握。因为他的沉寂了太久,虽然打下了无敌根基,但是境界上仍比同龄人相差不少。
正当萧炎发愁如何提升实力,在家族大比中取得第一时,扳指中的java扎老突然飘出,吓了萧炎一跳。
“是不是在发愁如何在比赛中夺得第一?”扎老仿佛看透了萧炎的内心,开门见山的问道,“我倒是有一个办法,只要你将这部《工厂模式》领悟,在比赛中夺得第一,一雪前耻应该不成问题”。
萧炎闻言不禁大喜,连忙将扎老传来的《工厂模式》接过,迫不及待的打开翻阅起来:
《工厂模式》
第一篇:什么是工厂模式
工厂模式是一种非常常用的创建型设计模式,其提供了创建对象的最佳方式。在创建对象时,不会对客户端暴露对象的创建逻辑,而是通过使用共同的接口来创建对象。
第二篇:工厂模式的优点
解耦:将对象的创建和使用进行解耦
简单复用:对于一些很复杂的对象,通过工厂模式可以简单地调用创建方法就可以重复创建此种对象
方便维护:对象的创建统一由工厂进行管理,在对象创建发生变化时,只需要维护该工厂即可。
第三篇:简单工厂模式
所谓简单工厂模式,简单来讲就是:
- 有一种不同厂家的产品,如苹果手机,华为手机。
- 有一个工厂,可以生产你想要的手机
- 工厂中有一个创建方法,根据传入的参数,返回不同厂家的产品。比如你传入“苹果”,该方法就生产一个苹果手机,你传入“华为”,该方法就生产一个华为手机。
这种生产手机的模式就是简单工厂模式
通过调用工厂类的创建方法,该方法中根据传入的参数返回指定类型的产品。
第四篇:工厂模式
上面介绍了简单工厂模式,那么工厂模式呢?
就是不需要在一个工厂类中靠传递参数来区分返回哪种厂家的手机。而是每个厂家建一个工厂,需要哪种手机,就让哪家的手机工厂创建。
比如我需要一部苹果手机,就调用苹果手机工厂的创建方法,它就给我做出一部苹果手机来了
第五篇:抽象工厂模式
抽象工厂模式和工厂模式几乎是差不多的,它们的区别就是华为工厂和苹果工厂不仅生产手机,还生产电脑,涉及多个产品
附录:代码实现
产品–手机:
手机基类:
public abstract class Phone {
public Phone(String name, Date createdTime) {
System.out.println("这是一部"+name+"手机");
System.out.println("生产日期:"+createdTime);
}
}
- 苹果手机
public class ApplePhone extends Phone {
public ApplePhone() {
super("苹果", new Date());
}
}
- 华为手机
public class HuaweiPhone extends Phone {
public HuaweiPhone(){
super("华为",new Date());
}
}
产品–电脑
电脑基类
public abstract class Computer {
public Computer(String name, Date createdTime) {
System.out.println("这是一部"+name+"电脑");
System.out.println("生产日期:"+createdTime);
}
}
- 苹果电脑
public class AppleComputer extends Computer {
public AppleComputer() {
super("苹果", new Date());
}
}
- 华为电脑
public class HuaweiComputer extends Computer {
public HuaweiComputer(){
super("华为",new Date());
}
}
简单工厂模式
工厂内部if判断要生产哪种产品
- 简单工厂类
public class SimplePhoneFactory {
public Phone createPhone(String phoneName) {
if ("huawei".equals(phoneName)) {
return new HuaweiPhone();
} else if ("apple".equals(phoneName)) {
return new ApplePhone();
}
return null;
}
}
- 使用案例
public class Client {
public static void main(String[] args) {
SimplePhoneFactory factory = new SimplePhoneFactory();
Phone applePhone = factory.createPhone("apple");
Phone huaweiPhone = factory.createPhone("huawei");
}
}
工厂模式(只生产一种产品:手机)
- 工厂基类
public abstract class PhoneFactory {
public abstract Phone createPhone();
}
- 华为工厂
public class HuaweiFactory extends PhoneFactory{
@Override
public Phone createPhone() {
return new HuaweiPhone();
}
}
- 苹果工厂
public class AppleFactory extends PhoneFactory{
@Override
public Phone createPhone() {
return new ApplePhone();
}
}
- 使用
public class Client {
public static void main(String[] args) {
PhoneFactory appleFactory = new AppleFactory();
Phone applePhone = appleFactory.createPhone();
PhoneFactory huaweiFactory = new HuaweiFactory();
Phone huaweiPhone = huaweiFactory.createPhone();
}
}
抽象工厂模式
上面的两种模式只生产手机一种产品,而抽象工厂模式生产多种产品,如手机和电脑
- 抽象工厂基类
public abstract class AbstractFactory {
public abstract Phone createPhone();
public abstract Computer creatComputer();
}
- 苹果工厂类
public class AppleFactory extends AbstractFactory {
@Override
public Phone createPhone() {
return new ApplePhone();
}
@Override
public Computer creatComputer() {
return new AppleComputer();
}
}
- 华为工厂类
public class HuaweiFactory extends AbstractFactory {
@Override
public Phone createPhone() {
return new HuaweiPhone();
}
@Override
public Computer creatComputer() {
return new HuaweiComputer();
}
}
- 调用工厂方法生产手机和电脑
public class Client {
public static void main(String[] args) {
AbstractFactory appleFactory = new AppleFactory();
Phone applePhone = appleFactory.createPhone();
Computer appleComputer = appleFactory.creatComputer();
AbstractFactory huaweiFactory = new HuaweiFactory();
Phone huaweiPhone = huaweiFactory.createPhone();
Computer huaweiComputer = huaweiFactory.creatComputer();
}
}
萧炎翻阅完毕,赶紧将内容记在心中。距离家族编程大比的时间仅剩三天,萧炎也只能在这三天中拼命修炼《工厂模式》,奈何时间太短,萧炎总觉得有些东西难以明悟,希望在比赛中借助比赛的磨练能够掌握这工厂模式。
终于到了家族编程大比,凭借萧炎掌握的《七大设计原则》,他就已经打败诸多家族子弟,晋级8强。之后又是倚仗《单例模式》打败家族天骄大长老的孙子萧鼎和二长老的宝贝孙女萧月儿,进入决赛。
然而决赛中的对手则是家族太上长老的关门弟子萧剑,此人编程讲究快准狠,无论是代码质量还是编码的速度,都无与伦比,已经隐隐超过萧炎一头。萧炎面对题目,尽管已经早已编写出一套解决方案,但是他明白这套代码攫夺无法打败萧剑。
萧炎迅速整理感悟比赛中的经验收获,希望借此明悟《工厂模式》。“看来上天还是更眷恋我萧炎啊”萧炎在冥思一刻钟之后,嘴角终于漏出一丝不可查觉的微笑。
《工厂模式》已经练成,萧炎凭借优秀的设计模式,最终打败萧剑,夺得了本次家族编程大比的头筹。
“听说此次比赛,第一名奖励可是格外的丰厚,与往年不可相提并论”,想到这,萧炎不禁心中一阵激动。
…
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/71742.html