来源:每日经济 网址:http://www.cibkglfj.cn/a/www.d1-bus.com/
李陈张·豆浆油条集市公司在多年的经营中,主要以中式风格主题餐饮品牌打造为主,能够在市场树立很好形象,凭借着自己产品的种类和丰富的类型,让很多顾客满意,给大家带来更加满意的用餐选择。fedelao豆捞坊针对大锅不方便,并需要回收餐具这一痛点,实现“一人一锅”安全卫生的用餐形式,干净卫生,把人群限定在单身或情侣的群体上,满足1、2人的火锅用餐,且不会浪费!在火锅配送方面豆捞坊坚持免费送锅,解决用户吃火锅麻烦的问题,送出的火锅无需回收,这就相当于一张隐形的会员卡。八旺火锅串串也是一个颇具朝气和向上气质的串串香加盟品牌。
“蜀地源冒菜”将正宗的冒菜带到申城,通过精心挑选的优质香料和新鲜食材,并辅以传统的制作手法将食材和香料融为一体。 作为国内最大规模的加盟连锁博览会,中国品牌加盟投资博览会已走过了六年的光辉历程,而每一次的举办更是主流媒体与行业关注并且争相报道的焦点。
她由当年一个精品店的小老板,成为了今天在全国拥有300多家加盟连锁店的企业老总。始终为合作伙伴提供最优运营解决方案,为目标消费者提供优质的产品和服务标准。
从成本与运营角度看,小杯比中杯便宜3元,但同样也是含有一份浓缩咖啡,中杯利润明显高一些。上面简单的介绍了四点关于新手开一家餐饮店面,应该注意哪些方面。
重点推荐:小米再出顶级爆款!动力犹如野兽,网友:用得太舒适,停不下来 是集企业管理咨询、餐饮连锁经营、网络科技创新的综合型企业。 1、学乐少儿英语技能品德双丰收 2、唱吧麦颂打造全新形态KTV 3、重庆崽儿火锅传统重庆老火锅 4、芬吉九茶开创便捷消费 《招商优惠早知道》 1、日全食中式快餐免加盟费 2、一灌通发布会人民大会堂全面召开 《项目直通车》 1、大自然克拉尼 中国加盟网独家策划的专栏节目《创业播报站》,重点打造新闻直击、招商优惠早知道和项目直通车三大栏目。
来源:mikechen的互联网架构
工厂方法模式是 简单工厂模式 的进一步抽象和升级,使用频次也更高。
工厂方法模式实现了可扩展,同时满足开闭原则,解决了简单工厂模式每次添加新的产品时,都需要修改工厂类的问题。
今天,我们主要了解工厂方法模式。
大家好,我是mikechen。本文是《深入浅出设计模式》的第 10 篇。刚结束的设计模式系列篇:七大设计原则(2万+字、40多张图解),大家反响还不错。
为方便学习,我已将全部内容更新到《深入浅出设计模式》PDF 了,该PDF目前有 2+万字,50+张图解,80多页,内容涵盖设计模式的 7 大原则、23 种设计模式。图文并茂非常详细,夯实基础、复习备面都用得上,需要的同学文末自取。
工厂方法模式( Factory method pattern),又称为工厂模式。
工厂方法模式定义工厂父类负责定义创建对象的公共接口,而子类则负责生成具体的对象。
工厂方法模式的特点是:构建的都是同一类型的对象(实现相同的接口);且每一类对象对应一个工厂。
Product:抽象产品类。
ConcreteProduct:具体产品类,实现Product接口。
Factory:抽象工厂类,该方法返回一个Product类型的对象。
ConcreteFactory:具体工厂类,返回ConcreteProduct实例。
工厂方法模式是简单工厂模式的进一步抽象和升级,它解决了简单工厂模式每当添加新的产品品类的时候,都需要修改工厂类的问题。
在没有引入工厂方法模式前,我们每次需要增加一种产品,就需要去修改工厂类的方法逻辑,这就违背了开闭原则,不易形成高内聚、松耦合的结构,维护非常麻烦。
工厂方法模式可以在不修改原来代码的情况下,让系统引进新的产品,即满足开闭原则。
这里我们依然沿用《秒懂简单工厂模式》中手机产品的例子。
源码示例:
1)创建抽象产品
手机的产品类,有一个 start 方法用于手机启动:
package com.mikechen.java.design.factory.simple;
public abstract class Phone{
public abstract void start();
}
2)创建具体产品
具体的电脑产品分别是华为、小米和苹果手机.
华为手机:
package com.mikechen.java.design.factory.simple;
public class HuaWeiPhone extends Phone{
@Override
public void start() {
System.out.println("华为手机启动");
}
}
小米手机:
package com.mikechen.java.design.factory.simple;
public class XiaoMiPhone extends Phone{
@Override
public void start() {
System.out.println("小米手机启动");
}
}
苹果手机:
package com.mikechen.java.design.factory.simple;
public class IPhone extends Phone{
@Override
public void start() {
System.out.println("苹果手机启动");
}
}
3)创建抽象工厂
其中,有一个 createPhone 方法,我们想要生产哪个品牌的手机,就生产哪个:
package com.mikechen.java.design.factory.simple;
public abstract class PhoneFactory {
public abstract <T extends Phone> T createPhone(Class<T> clz);
}
4)具体工厂
假设位于深圳的华强北是一个具体的工厂,它继承抽象工厂,通过反射来生产不同厂家的手机:
package com.mikechen.java.design.factory.simple;
/**
* 深圳华强北工厂
*/
public class HQBPhoneFactor extends PhoneFactory {
@Override
public <T extends Phone> T createPhone(Class<T> clz) {
Phone phone=null;
String classname=clz.getName();
try {
//通过反射来生产不同厂家的电脑
Phone= (Phone) Class.forName(classname).newInstance();
} catch (Exception e) {
e.printStackTrace();
}
return (T) Phone;
}
}
客户端调用
package com.mikechen.java.design.factory.simple;
public class Client {
public static void main(String[]args) {
PhoneFactory phoneFactory = new HQBPhoneFactor();
HuaWeiPhone mHuaWeiPhone=phoneFactory.createphone(HuaWeiPhone.class);
mHuaWeiPhone.start();
XiaoMiHuaWeiPhone mXiaoMiHuaWeiPhone=PhoneFactory.createPhone(XiaoMiHuaWeiPhone.class);
mXiaoMiHuaWeiPhone.start();
IphoneComputer mIPhone=PhoneFactory.createphone(Iphone.class);
mIphone.start();
}
}
结构很简单,看看下面的UML图就更加容易理解了:
优点:
灵活性增强:对于新产品的创建,只需多写一个相应的工厂类。
典型的解耦框架:高层模块只需要知道产品的抽象类,无须关心其他实现类。
缺点:
系统的复杂度增加:添加新产品时,需要增加新产品类,同时提供与之对应的具体工厂类,系统类的个数将成对增加。
一个具体工厂只能创建一种具体产品,如果要更换另外一种产品,仍然需要修改实例化的具体工厂类。
当一个类不知道它所需要的对象的类时;
当一个类希望通过其子类来指定创建对象时。
工厂方法模式与简单工厂模式的区别:
工厂方法模式:客户端不知道它所需要的对象的类,抽象工厂类通过其子类来指定创建哪个对象,不违背开闭原则。
简单工厂模式:在工厂类中包含了必要的逻辑判断,根据不同的条件、来动态实例化相关的类,违背了开闭原则。
仍以生产手机为例,假设我们需要生产苹果手机。
工厂方法模式:只需要直接创建产品,不需要去修改工厂类。
简单工厂模式:需要在工厂类中再添加一个 Case 分支条件,这违背了开闭原则,因为对修改也开放了。
对开闭原则还不太理解的同学,看这篇:设计模式七大原则最全总结 。
通过本文,我们了解并掌握了工厂方法模式的所有核心知识,包括工厂方法模式的概念、原理、应用场景、实现等。
工厂方法模式体现了面向接口编程的思路,它并不是简单把 New 的过程换成了函数,而是抽象出一套面向接口的设计模式。
工厂方法模式在保留简单工厂模式的封装优点的同时,让扩展变得更加简单,让继承变得可行,增加了多态性的体现。
来自 “ ITPUB博客 ” ,链接:http://www.cibkglfj.cn/70024923/viewspace-2996094/,如需转载,请注明出处,否则将追究法律责任。