栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java 工厂模式——我和漂亮学姐的“雨后小故事”,和漂亮学姐吃完晚饭,突然下雨了......让你以最难忘的方式了解工厂模式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java 工厂模式——我和漂亮学姐的“雨后小故事”,和漂亮学姐吃完晚饭,突然下雨了......让你以最难忘的方式了解工厂模式


小故事引入

自上篇继续讲故事

学姐要带我去吃饭,并且还要帮我找酒店,心里莫名其妙的爽快!哦,天哪,桃花运?

我便答应了学姐,和她一起去吃饭。大概晚上七点半左右,学姐给我打电话了,让我出去吃饭,我刚收拾完东西,下宿舍楼,就觉得天气有点不好!阴沉沉的,哪里管得了那么多,便去找学姐了。

“嗨!我在这儿…”,原来学姐已经在校门口等我了!接着我们俩像小兔子似的,走了出去,这一路上,学姐给我讲了许多关于她的事!她原来姓汪,别人都叫她铁锤妹妹,她还有很多好朋友,有记得诚、扬帆向海、小兔神 我们彼此了解,她知道我叫 程忆难!

“你看,那里有家西餐厅,我们去那里吧!”,我说道,我们便进去这家西餐厅,点了两份牛排,喝点红酒什么的!吃完饭后,唉,真是天公不作美,突然下起了雨,我们便一起坐着等雨停下,一直等到晚上十点,可是,老天爷似乎没有罢休!我说:“就在对面就有家酒店,我们一起先过去吧!”,我和学姐便一起奔跑过去,一路上感觉没有淋多少雨,但是我们俩已经从上到下湿透了!更倒霉的是,现在只剩下一间房了!我俩只能委屈一下了,将就一晚上!“咦!啊-----,怎么是一张大床?”,我的天!学姐低声说道:“没关系!先这样吧,我要先去洗澡了,你待会儿帮我把衣服晾一下!”!

学姐走进了洗浴间,开门对我说,帮我把衣服晾起来,我还没来得及反应,直接把衣服递给了我,紧接着听到了水落到肌肤、地上的声音。帮她晾好衣服后,坐在椅子上,好难受!全身湿透了,真的很不舒服… …

"喂该你了!"这一次,我又呆住了,披着浴巾的学姐更加有诱惑力,学姐说我好奇怪,更气人的是,最近上火,突然流鼻血了!此时此刻,我也不知如何是好,往洗澡间跑去…

我洗完澡后,学姐说:“帮我吹下头发吧,我头发还没有干!”我便坐到床边,帮学姐吹起了头发,学姐温润的体香里,夹杂着我的好奇!吹完头发后,我问学姐为什么对我这么好!她说:“不告诉你,关灯睡觉吧”…

可是,被子只有一条,我对学姐说:“你盖吧,晚上应该不冷!”,学姐点点头。我们俩便在床边躺下,漆黑的夜里夹杂着一丝丝尴尬的气氛!忽然有点凉,我突然好冷,我对学姐说:“我能盖点被子吗?有点冷”,“嗯,可以!”。她便把被子给我盖上,并且抱住了我…

下一篇故事,此处变颜色 《Java 建造者模式——学姐夸我的“手法”很好很专业,学姐感到很是欣慰和愉悦…让你以最难忘的例子记住建造者模式》!!!请订阅我的专栏!!!


漂亮学姐的 Java 简单工厂模式

故事中提到,学姐和学弟共进晚餐,帮学弟找酒店,这些都是学姐的想法!
都是要帮助学弟,创建这个帮手接口:


public interface SisterHelper {

    
    void helpBrother();


}


再来创建两个类帮助学弟的类:

  • 学姐和程忆难共进晚餐类

public class EatDinner implements SisterHelper {

    @Override
    public void helpBrother() {
 System.out.println("学姐 和 学弟程忆难 吃晚饭");
    }
}

  • 学姐帮程忆难找酒店类

public class FindHotel implements SisterHelper {
    
    @Override
    public void helpBrother() {
 System.out.println("学姐 帮 学弟程忆难 找酒店");
    }
}


创建好了,接下来我们要构建学姐的小脑袋瓜,让学姐做出判断:


public class BeautifulSisterFactory {

    public SisterHelper helpBrother(String help) {
 switch (help) {
     case "eatDinner":
  return new EatDinner();
     case "findHotel":
  return new FindHotel();
 }

 return null;
    }

}


好了,接下来我们来实现学姐的作为:



public class Simple {

    public static void main(String[] args) {

 //初始化学姐的小脑袋瓜
 BeautifulSisterFactory beautifulSisterFactory = new BeautifulSisterFactory();

 //学姐和学弟程忆难共进晚餐
 beautifulSisterFactory.helpBrother("eatDinner").helpBrother();

 //学姐帮学弟找酒店
 beautifulSisterFactory.helpBrother("findHotel").helpBrother();

    }
}

现在的程序结构是这样的:

运行看下结果:

可以看到,学姐和学弟发生了了两件事!但是学姐和学弟发生的不只是这两件事,还有和学弟一起等雨、一起在雨中奔跑…

难道还要接着写判断和创建帮学弟的类吗?这显然很麻烦!解耦性不高!请继续往下看!


漂亮学姐的 Java 工厂方法模式

一想法,一作为,先想和学弟一起吃晚饭,接下来行动实现和学弟一起吃晚饭,和学弟找酒店亦是如此!先想再做和实现!

首先写好学姐具体的作为:


abstract class SisterIdea {

    public SisterIdea() {

    }
}


class EatDinner extends SisterIdea {

    public EatDinner() {
 System.out.println("学姐 和 学弟程忆难 共进晚餐");
    }
}


class FindHotel extends SisterIdea {
    public FindHotel() {
 System.out.println("学姐 帮 学弟程忆难 找酒店");
    }
}


class Running extends SisterIdea {
    public Running() {
 System.out.println("学姐 和 学弟程忆难 在雨中奔跑");
    }
}

之后写出学姐的小心思、小想法!


interface SisterBrain {
    SisterIdea createIdea();
}


class IdeaEatDinner implements SisterBrain {
    @Override
    public EatDinner createIdea() {
 return new EatDinner();
    }
}


class IdeaFindHotel implements SisterBrain {

    @Override
    public FindHotel createIdea() {
 return new FindHotel();
    }
}


class IdeaRunning implements SisterBrain {

    @Override
    public Running createIdea() {
 return new Running();
    }
}

接下来学姐要实现她的小想法



public class Simple {

    public static void main(String[] args) {

 //初始化学姐想和学弟共进晚餐的小想法
 IdeaEatDinner ideaEatDinner = new IdeaEatDinner();

 //实现学姐的小想法
 ideaEatDinner.createIdea();

 //======================================================

 //初始化学姐想帮学弟找酒店的小想法
 IdeaFindHotel ideaFindHotel = new IdeaFindHotel();

 //实现学姐的小想法
 ideaFindHotel.createIdea();

 //======================================================

 //初始化学姐想和学弟在雨中奔跑的小想法
 IdeaRunning ideaRunning = new IdeaRunning();

 //实现学姐的小想法
 ideaRunning.createIdea();

    }
}

现在结构是这样的:

运行起来看一下:

现在,学姐只要多一个想法,便写一个方法和一个实现!

随着学姐对学弟的好感度提高!学弟可能猜到了学姐不同的想法!请往下看!


漂亮学姐的 Java 抽象工厂模式

构建学姐的大脑,学弟看到学姐或了解到学姐什么,会做出什么反应?


public interface MyBrain {

    public MyIdea getIdea();

}

class UnderstandSister implements MyBrain {

    @Override
    public MyIdea getIdea() {
 System.out.println("学姐 让 学弟了解她");
 return new Kindly();
    }
}

class TowelSister implements MyBrain {

    @Override
    public MyIdea getIdea() {
 System.out.println("学姐 让 学弟 看到了她披着浴巾");
 return new Beautiful();
    }
}


构建学弟的想法,看到或了解学姐后,学弟会认为什么?


public interface MyIdea {
    public void think();
}


class Kindly implements MyIdea {

    @Override
    public void think() {
 System.out.println("学弟 想到了 学姐 很和蔼");
    }
}


class Beautiful implements MyIdea {

    @Override
    public void think() {
 System.out.println("学弟 想到了 学姐 很漂亮");
    }
}

接下来,完成这一过程,来运行



public class Abstract {

    public static void main(String[] args) {

 //构建学弟的大脑 让学弟了解学姐
 MyBrain myBrain1 = new UnderstandSister();

 //了解后 学弟的大脑做出处理
 MyIdea idea1 = myBrain1.getIdea();

 //然后学弟认为学姐很和蔼
 idea1.think();

 System.out.println("===================================");

 //构建学弟的大脑 让学弟看到了学姐披着浴巾
 MyBrain myBrain2 = new TowelSister();

 //看到后 学弟的大脑做出处理
 MyIdea idea2 = myBrain2.getIdea();

 //然后学弟认为学姐很漂亮
 idea2.think();

    }
}

结构是这样的


看到运行结果

学姐对学弟的好感度提升了!!!!!!!!!

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号