加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

[javaSE] 看知乎学习工厂模式

发布时间:2020-05-25 03:16:20 所属栏目:PHP 来源:互联网
导读:factory的“本质”就是根据不同的输入创建出不同类型的对象。引入factory的原因就是你需要根据不同的输入创建不同类型的对象。简单工厂模式相当于是一个工厂中有各种产品,创建在一个类中,客户无需知道具体产品的名称,只需要知道产品类所对应的参数即可。但

factory的“本质”就是根据不同的输入创建出不同类型的对象。

引入factory的原因就是你需要根据不同的输入创建不同类型的对象。

简单工厂模式相当于是一个工厂中有各种产品,创建在一个类中,客户无需知道具体产品的名称,只需要知道产品类所对应的参数即可。但是工厂的职责过重,而且当类型过多时不利于系统的扩展维护。

工厂方法模式相当于在简单工厂模式的基础上增加一个抽象工厂,在简单工厂模式下如果增加一个产品,要修改工厂类,不符合开闭原则。在工厂方法下,只需要增加具体工厂和具体产品即可。

抽象工厂,类似于一个集团旗下生产的各种产品的工厂,这些产品是一个产品族。是在工厂方法下的扩展。比如一个产品的界面,可以通过直接改变具体工厂的实例来改变产品的界面风格。

java版

<span style="color: #0000ff;">public <span style="color: #0000ff;">class<span style="color: #000000;"> Home {

</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;static</span> <span style="color: #0000ff;"&gt;void</span><span style="color: #000000;"&gt; main(String[] args) {
    Factory factory </span>= <span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; GoodsFactory();
    Product product </span>=<span style="color: #000000;"&gt;factory.instance();
    product.todo();
}

}
<span style="color: #008000;">//<span style="color: #008000;">这样感觉是工厂方法模式
<span style="color: #008000;">//<span style="color: #008000;">这是商品
<span style="color: #0000ff;">class<span style="color: #000000;"> Product{
<span style="color: #0000ff;">public <span style="color: #0000ff;">void<span style="color: #000000;"> todo(){
System.out.println("使用商品..."<span style="color: #000000;">);
}
}
<span style="color: #008000;">//<span style="color: #008000;">这是工厂
<span style="color: #0000ff;">abstract <span style="color: #0000ff;">class<span style="color: #000000;"> Factory{
<span style="color: #0000ff;">public <span style="color: #0000ff;">abstract<span style="color: #000000;"> Product instance();
}
<span style="color: #0000ff;">class GoodsFactory <span style="color: #0000ff;">extends<span style="color: #000000;"> Factory{
<span style="color: #0000ff;">public<span style="color: #000000;"> Product instance(){
<span style="color: #0000ff;">return <span style="color: #0000ff;">new<span style="color: #000000;"> Product();
}
}

js版:

PHP版:

"使用商品..." instance( =Factory::instance('Product'->todo();

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读