WX搜索:程序员的个人修养查看更多内容简单工厂作为对工厂模式的介绍,简单工厂其实准确来说并不是一种设计模式,更像是一种编程习惯。它通过将对象创建的细节提取到一个唯一的类中,我们称之为工厂类,从而完成对象创建和业务功能的解耦。提取出来的工厂类也可以被多个模块复用。类图代码实现下面以咖啡店为例。一家咖啡店可以出售多种咖啡,比如摩卡、拿铁……,而每一种咖啡都可以看作是一个对象实例,需要由咖啡店工厂来创建。顾客只需要告诉咖啡店他们想喝什么咖啡,咖啡店就可以提供不同的咖啡。如果以后增加新的咖啡品种,比如卡布奇诺,只需要咖啡店更新产品即可。它可以提供给客户,无需任何更改。同一位顾客可以享用更多品种的咖啡。至于这家咖啡店,可以线下运营,也可以同时加入线上运营,比如美团团购……这类似于工厂多个模块的复用。下面我们用代码来实现:/***具体实例类*LatteCoffee*/publicclassLatteCoffeimplementsCoffe{@OverridepublicStringcoffeeName(){return"latte";}}packagecom.study.design.Factory.abstractfactory;/***具体实例类*Mochacoffee*/publicclassMochaCoffeimplementsCoffe{@OverridepublicStringcoffeeName(){return"mocha";}}packagecom.study.design.Factory.abstractfactory;/***简单工厂类*/publicclassSimpleFactory{/***这里简单定义*如果输入类型为1,表示获取摩卡咖啡对象,其他都是lattes*@paramtyperequiredcoffeetype*@return*/publicCoffeproductCoffe(inttype){if(type==1){returnnewMochaCoffe();}else{返回新的LatteCoffe();}}}packagecom.study.design.Factory.abstractfactory;/***Consumer*/publicclassCustomer{私人简单工厂简单工厂;/*在构造方法中绑定工厂实例*也可以用其他方式,比如set方法*/publicCustomer(SimpleFactorysimpleFactory){this.simpleFactory=simpleFactory;}/*客户需求*/publicvoiddrink(inttype){Coffecoffe=simpleFactory.productCoffe(type);System.out.println("我喝了一杯"+coffee.coffeName());}}packagecom.study.design.Factory.abstractfactory;publicclassSimpleFactoryTest{publicstaticvoidmain(String[]args){//创建工厂对象-咖啡店SimpleFactorysimpleFactory=newSimpleFactory();//客户-消费者Customercustomer=newCustomer(simpleFactory);//不同的客户对象-不同的咖啡customer.drink(1);customer.drink(2);}}简单工厂的关键点其实就是把创建对象的逻辑抽离到另一个类中,称为工厂类,这样创建对象的过程就和用户一样解耦了,用户发送不同的参数给工厂类,而工厂类负责创建不同的对象并返回,体现了Java对象封装的特点,将单一的功能逻辑抽取出来封装起来。WX搜索:程序员的个人修养查看更多
