阮文娟 2025-11-02 00:25:14
每经编辑|陈名钰
当地时间2025-11-02,gfyuweutrbhedguifhkstebtj,COS调教
想象一(yi)下(xia),你正在经(jing)营一(yi)家(jia)玩具工(gong)厂,你(ni)需要生产各种各样(yang)的玩(wan)具:小(xiao)汽车、芭比(bi)娃娃、乐高积木(mu)。起(qi)初,一(yi)切都很(hen)简单。每当有订单,你(ni)直接(jie)拿起(qi)对应(ying)的模(mo)具,加(jia)工,然后组(zu)装(zhuang)。但(dan)很(hen)快,问题就来(lai)了(le)。
随着玩具种类的(de)增多(duo),你的生产(chan)流(liu)程(cheng)变得(de)越来越(yue)复(fu)杂。你需(xu)要(yao)维(wei)护大量(liang)的模具(ju),每(mei)增加一种新玩(wan)具,就(jiu)意味着你(ni)需(xu)要增(zeng)加(jia)一套新的(de)工(gong)具和流(liu)程。当(dang)客户想要定制(zhi)一款独一无二的玩(wan)具(ju)时(shi),你更(geng)是头(tou)疼欲裂,因(yin)为(wei)你需(xu)要修改(gai)现有的生(sheng)产(chan)线(xian),这不仅(jin)耗(hao)时,还(hai)可(ke)能影响(xiang)其他(ta)玩(wan)具(ju)的生产(chan)。
在(zai)软件(jian)开(kai)发(fa)的世界里,我们常常(chang)面临(lin)类似(shi)的(de)问题。当(dang)我(wo)们创建(jian)对象(xiang)时(shi),如(ru)果直接在代码(ma)中硬(ying)编码(ma)对象(xiang)的创建逻辑,会带(dai)来一系列的(de)麻烦(fan):
紧耦合(he):客户端(duan)代码(ma)直接(jie)依赖(lai)于具体(ti)的产(chan)品(pin)类(lei),一旦产(chan)品(pin)类(lei)发生(sheng)变化,客户(hu)端代码也必须(xu)随(sui)之修改。这就(jiu)像你(ni)的玩具(ju)订(ding)单系(xi)统(tong)直接(jie)连(lian)接到每一个玩(wan)具的(de)生(sheng)产(chan)流程(cheng),改(gai)一(yi)个螺(luo)丝都(dou)需(xu)要改整(zheng)个系(xi)统。可扩展(zhan)性差(cha):想要增加新的(de)产品类型?那你可(ke)能需要修(xiu)改(gai)大量创建(jian)对(dui)象的代码,这(zhe)无疑(yi)是“牵一(yi)发(fa)而动(dong)全身(shen)”。
代码(ma)冗余(yu):相似(shi)的对象创(chuang)建逻(luo)辑可能(neng)会(hui)在代码(ma)中(zhong)反复出现(xian),导致代码(ma)重复(fu),难以维(wei)护。
工厂(chang)模式(shi),正(zheng)是(shi)为了解决这些(xie)痛点(dian)而(er)诞生(sheng)的(de)“神器(qi)”。它就像(xiang)是(shi)为你(ni)的代码建(jian)造了(le)一条(tiao)高效(xiao)、灵活(huo)的“生产线(xian)”,将对(dui)象(xiang)的创建(jian)过程(cheng)与客(ke)户(hu)端(duan)代(dai)码(ma)解耦,让你(ni)的程序(xu)更(geng)加(jia)健(jian)壮、易于扩展和(he)维护(hu)。今(jin)天(tian),我(wo)们(men)就来深(shen)入了解(jie)一下(xia)工厂(chang)模式(shi)的(de)“三(san)驾(jia)马(ma)车(che)”:简(jian)单工(gong)厂、工(gong)厂方(fang)法和(he)抽象(xiang)工厂,看看(kan)它(ta)们(men)各自(zi)有什么绝活(huo)!
简单(dan)工厂,顾名思义(yi),就是一(yi)种(zhong)“简(jian)单”的工厂。它(ta)并不属于(yu)GoF(GangofFour)的23种设计(ji)模式,但(dan)因为其(qi)简洁(jie)易懂(dong)的特(te)性(xing),在实际开发(fa)中应用非常广(guang)泛(fan)。你(ni)可(ke)以把它(ta)想象成一(yi)个(ge)“万能(neng)的(de)组(zu)装(zhuang)师(shi)傅”。
简单工(gong)厂的核心在于(yu),将对象的创建(jian)逻辑封(feng)装在一(yi)个单(dan)独(du)的类(工(gong)厂类(lei))中。客(ke)户端(duan)只(zhi)需(xu)要告(gao)诉工(gong)厂它(ta)想要什(shen)么(me)“产(chan)品”,工厂(chang)就会(hui)根(gen)据(ju)“指(zhi)令(ling)”返回(hui)相(xiang)应(ying)的(de)具(ju)体产(chan)品对(dui)象。
假设我们要(yao)开(kai)发(fa)一个(ge)图形(xing)绘制系统,可以(yi)绘制(zhi)圆形、方形(xing)和(he)三(san)角形(xing)。
传(chuan)统(tong)方式(无工厂)://客户端代码Shapeshape;if(type.equals("circle")){shape=newCircle();}elseif(type.equals("square")){shape=newSquare();}else{shape=newTriangle();}shape.draw();
看(kan)到(dao)了吗?客户端代(dai)码需要(yao)知道所(suo)有具体(ti)图(tu)形类(lei)的存(cun)在(zai),并(bing)且需(xu)要用(yong)大(da)量的if-else语句来(lai)判断创建(jian)哪(na)个(ge)对(dui)象。一旦(dan)我(wo)们(men)增加一(yi)个(ge)新的图形(比如椭圆(yuan)),就需要修(xiu)改这里(li)的(de)代码(ma)。
//ShapeFactory.javapublicclassShapeFactory{publicShapegetShape(StringshapeType){if(shapeType==null){returnnull;}if(shapeType.equalsIgnoreCase("CIRCLE")){returnnewCircle();}elseif(shapeType.equalsIgnoreCase("SQUARE")){returnnewSquare();}elseif(shapeType.equalsIgnoreCase("TRIANGLE")){returnnewTriangle();}returnnull;}}//客户端代(dai)码(ma)ShapeFactoryfactory=newShapeFactory();Shapeshape1=factory.getShape("CIRCLE");shape1.draw();Shapeshape2=factory.getShape("SQUARE");shape2.draw();
封装(zhuang)了(le)创建(jian)逻辑(ji):客(ke)户端无(wu)需关(guan)心对象的(de)具体(ti)创建(jian)过程(cheng),只需要调用工(gong)厂的静(jing)态(tai)方法(fa)(通常是(shi)静态(tai)方(fang)法,也(ye)有(you)非(fei)静态(tai)的)并传入参数(shu)即可。提高了(le)代码(ma)的可读性和(he)可维(wei)护(hu)性(xing):对象(xiang)创建(jian)的逻辑集(ji)中在一(yi)个(ge)地(di)方(fang),易于修(xiu)改(gai)和维(wei)护。降低了(le)客户端(duan)与(yu)具(ju)体产品类(lei)的耦合:客户(hu)端只依(yi)赖于工(gong)厂类(lei),而不(bu)是(shi)具体的产(chan)品类。
工厂类职责过(guo)重:当产(chan)品(pin)种类(lei)非常(chang)多(duo)时(shi),工(gong)厂(chang)类的if-else或(huo)switch语句会(hui)变得非常庞(pang)大(da),难以维护(hu)。不符合(he)开闭原则(ze)(OCP):每(mei)次(ci)增加(jia)新的产(chan)品类(lei)型(xing),都需要(yao)修改工厂(chang)类,这(zhe)违背(bei)了“对(dui)扩展(zhan)开放,对修改关(guan)闭”的设计(ji)原(yuan)则(ze)。
当你(ni)的应(ying)用中(zhong)需要创(chuang)建(jian)的对(dui)象种(zhong)类不(bu)多,且变化不频繁时(shi)。当你希望(wang)将(jiang)对象的创建逻(luo)辑(ji)集中管理(li),避免(mian)在多(duo)个地方重(zhong)复(fu)编写(xie)相同的(de)创(chuang)建(jian)代码时。当(dang)你(ni)希望(wang)隐(yin)藏对(dui)象创(chuang)建的细节(jie),让客(ke)户端代码(ma)更简洁(jie)时(shi)。
简单(dan)工厂就像一(yi)个(ge)勤劳(lao)的“万能组(zu)装师傅”,能(neng)够根(gen)据(ju)你(ni)的需求快速组装出(chu)各(ge)种(zhong)零(ling)件(jian)。但(dan)如果零(ling)件种(zhong)类实在太(tai)多,师(shi)傅一(yi)个人(ren)就有(you)点忙(mang)不过(guo)来了,而且每次(ci)来新零件,都得教师傅一(yi)遍新(xin)做法,这就不太(tai)符合“不修(xiu)改既(ji)有(you)代码就能扩展”的原则了(le)。
别(bie)担心,接(jie)下(xia)来的(de)“工厂(chang)方(fang)法(fa)”和“抽(chou)象工厂”将带来(lai)更高(gao)级(ji)的解决(jue)方案(an),让我们(men)一起(qi)进(jin)入下一个(ge)篇章,看(kan)看它们(men)如何应(ying)对(dui)更复(fu)杂的“生产挑(tiao)战(zhan)”!
如(ru)果说简(jian)单工(gong)厂是(shi)一位(wei)“万能(neng)组(zu)装师傅(fu)”,那么(me)工(gong)厂(chang)方法(fa)模式(FactoryMethod)则更像(xiang)是(shi)“各(ge)司其职的专业流(liu)水(shui)线”。它(ta)将(jiang)创(chuang)建(jian)对象的(de)责(ze)任委(wei)托(tuo)给(gei)子类(lei),让每个(ge)子(zi)类负(fu)责创建一种特(te)定的(de)产(chan)品。
工厂(chang)方法(fa)模式定(ding)义了一个(ge)创建对(dui)象(xiang)的接(jie)口,但由子类决(jue)定实例化(hua)哪一(yi)个(ge)类。换句话说(shuo),它允(yun)许(xu)一个(ge)类(lei)延迟实(shi)例(li)化到(dao)子(zi)类。工(gong)厂方法(fa)模(mo)式(shi)将(jiang)创(chuang)建对(dui)象的(de)工作“推”给(gei)了子类,每(mei)个子(zi)类实现(xian)一个工厂(chang)方(fang)法,用(yong)于(yu)创(chuang)建(jian)相应的(de)产品。
我们(men)继续(xu)上面的图(tu)形绘(hui)制系统。这(zhe)次,我(wo)们希望(wang)能(neng)够(gou)轻(qing)松地添(tian)加(jia)新的(de)图(tu)形(xing)类型(xing),而不需要修改(gai)现有(you)的(de)代码。
我们定(ding)义一个抽(chou)象的ShapeFactory(或称(cheng)为Creator):
//AbstractShapeFactory.java(Creator)publicabstractclassShapeFactory{//工(gong)厂方(fang)法,由(you)子(zi)类实现publicabstractShapecreateShape();//模(mo)板方法(fa),利(li)用(yong)工(gong)厂(chang)方法创建(jian)并使(shi)用产品publicvoiddrawShape(){Shapeshape=createShape();//委托给(gei)子类(lei)创建(jian)shape.draw();}}
然后,我们(men)为每种图形创(chuang)建一(yi)个具(ju)体的工厂类(ConcreteCreator):
//CircleFactory.java(ConcreteCreator)publicclassCircleFactoryextendsShapeFactory{@OverridepublicShapecreateShape(){returnnewCircle();}}//SquareFactory.java(ConcreteCreator)publicclassSquareFactoryextendsShapeFactory{@OverridepublicShapecreateShape(){returnnewSquare();}}//TriangleFactory.java(ConcreteCreator)publicclassTriangleFactoryextendsShapeFactory{@OverridepublicShapecreateShape(){returnnewTriangle();}}
//客户端(duan)代码ShapeFactoryfactory=newCircleFactory();factory.drawShape();//创建并绘制圆形ShapeFactoryfactory2=newSquareFactory();factory2.drawShape();//创(chuang)建(jian)并(bing)绘制方(fang)形
符合(he)开闭原(yuan)则(OCP):当需(xu)要添(tian)加新(xin)的产(chan)品类型(xing)时(shi),只需(xu)要创建一个(ge)新(xin)的具体工厂类(lei),而无需(xu)修改已(yi)有的(de)工厂类和(he)客户端代码。这(zhe)极大地提高(gao)了代码的可(ke)扩展(zhan)性。实现(xian)了创(chuang)建(jian)与使(shi)用(yong)分(fen)离:客(ke)户端代码与具(ju)体产品(pin)类(lei)和具(ju)体工厂类(lei)分离(li),提高了代码的(de)灵活(huo)性(xing)。单一职(zhi)责原则(ze):每个(ge)具(ju)体工(gong)厂类只负(fu)责创建一(yi)种产(chan)品。
类的(de)数(shu)量(liang)增(zeng)加:每增加一(yi)种(zhong)产品(pin),就需要增加(jia)一(yi)个(ge)具体的工厂类(lei)。当产(chan)品种类非(fei)常(chang)多时,类的数(shu)量可(ke)能会(hui)急剧(ju)增加(jia),带来一(yi)定的管(guan)理负(fu)担。引入了(le)额(e)外的复杂度(du):相对(dui)于简(jian)单工厂,工厂方(fang)法模式引(yin)入了抽(chou)象(xiang)工厂和具(ju)体工(gong)厂的(de)概念(nian),需要(yao)更(geng)深入的(de)理解(jie)。
当一个(ge)类不(bu)知(zhi)道它需要(yao)创建的对(dui)象(xiang)的(de)具体(ti)类时(shi)。当一(yi)个(ge)类(lei)希望(wang)由其子类(lei)来创建对象时(shi)。当你(ni)希(xi)望(wang)通过(guo)引(yin)入新(xin)的(de)子类来扩(kuo)展框架的(de)功(gong)能,而(er)无(wu)需(xu)修(xiu)改框(kuang)架的核心(xin)代码时。
工(gong)厂方(fang)法就(jiu)像(xiang)是为(wei)每(mei)一种(zhong)产品都配(pei)备了一台专(zhuan)属(shu)的(de)、高度自动(dong)化的生产(chan)线。这(zhe)样(yang)做(zuo)的好(hao)处(chu)是(shi),当(dang)你想要(yao)生产新产(chan)品时,只(zhi)需要(yao)“上线”一条新的(de)生(sheng)产(chan)线(xian)即可(ke),而不会干(gan)扰到现(xian)有的生产(chan)。虽然(ran)初期(qi)需(xu)要为每(mei)种(zhong)产(chan)品设计一(yi)条生(sheng)产线,但(dan)长(zhang)远来(lai)看(kan),这(zhe)会大大提(ti)高生产效(xiao)率和系(xi)统的可(ke)维(wei)护(hu)性(xing)。
在经历(li)了“万能(neng)组装师(shi)傅”和(he)“专属生产(chan)流水线”之后,我们(men)终于迎来了(le)工厂(chang)模(mo)式(shi)的“集(ji)大(da)成者(zhe)”——抽象工(gong)厂(chang)模(mo)式(shi)(AbstractFactory)。如果说(shuo)工厂方法(fa)是生产(chan)单一产品线的专(zhuan)家,那(na)么抽(chou)象工(gong)厂则(ze)是(shi)一个(ge)“家(jia)族式(shi)”的生(sheng)产专家(jia),它能够(gou)生产(chan)一系(xi)列相(xiang)关联的(de)产(chan)品。
抽(chou)象工(gong)厂模式(shi)提供一个(ge)创建(jian)一(yi)系(xi)列相(xiang)关或(huo)依(yi)赖对象(xiang)的接(jie)口,而无需(xu)指定(ding)它们的具(ju)体类。它(ta)通(tong)过定义一(yi)系列抽象(xiang)的“工(gong)厂方法”,让(rang)具体(ti)的工厂类(lei)负责实现这些(xie)方法,从而创建(jian)一系列具体(ti)的(de)产(chan)品。
想象一下,我们(men)要开发一个跨(kua)平台(tai)的GUI工具包(bao),需(xu)要支持Windows和(he)Mac两(liang)种风格(ge)的(de)界面。每种(zhong)风(feng)格的界(jie)面(mian)都有(you)相应的按钮、文本框和(he)复选框。
//AbstractButton.javainterfaceButton{voidrender();}//AbstractTextBox.javainterfaceTextBox{voidrender();}//AbstractCheckBox.javainterfaceCheckBox{voidrender();}
//WindowsButton.javaclassWindowsButtonimplementsButton{@Overridepublicvoidrender(){System.out.println("RenderingWindowsButton");}}//MacButton.javaclassMacButtonimplementsButton{@Overridepublicvoidrender(){System.out.println("RenderingMacButton");}}//...其他(ta)产品(pin)的(de)具(ju)体实现(xian)(TextBox,CheckBox)
接(jie)着,我(wo)们定(ding)义抽象工(gong)厂接(jie)口,其中包(bao)含创(chuang)建(jian)各种产品(pin)的工厂方法:
//GUIFactory.java(AbstractFactory)interfaceGUIFactory{ButtoncreateButton();TextBoxcreateTextBox();CheckBoxcreateCheckBox();}
创(chuang)建具(ju)体的工(gong)厂类,每(mei)个(ge)工厂(chang)类负责生(sheng)产一(yi)种风格(ge)的(de)产品(pin)家族(zu):
//WindowsFactory.java(ConcreteFactory)classWindowsFactoryimplementsGUIFactory{@OverridepublicButtoncreateButton(){returnnewWindowsButton();}@OverridepublicTextBoxcreateTextBox(){returnnewWindowsTextBox();//假设(she)已实(shi)现(xian)}@OverridepublicCheckBoxcreateCheckBox(){returnnewWindowsCheckBox();//假设(she)已(yi)实现}}//MacFactory.java(ConcreteFactory)classMacFactoryimplementsGUIFactory{@OverridepublicButtoncreateButton(){returnnewMacButton();}@OverridepublicTextBoxcreateTextBox(){returnnewMacTextBox();//假设已(yi)实(shi)现}@OverridepublicCheckBoxcreateCheckBox(){returnnewMacCheckBox();//假(jia)设已(yi)实现(xian)}}
客户(hu)端(duan)代(dai)码只需选(xuan)择对应(ying)的(de)工厂(chang),就可以获得一(yi)组协(xie)调一致(zhi)的(de)产品:
//客户(hu)端代(dai)码GUIFactoryfactory=newWindowsFactory();//或者(zhe)newMacFactory();Buttonbutton=factory.createButton();TextBoxtextBox=factory.createTextBox();CheckBoxcheckBox=factory.createCheckBox();button.render();textBox.render();checkBox.render();
强制(zhi)组合(he)一致性:抽(chou)象工厂确(que)保(bao)了创(chuang)建(jian)的产(chan)品是(shi)相互兼容(rong)的,因为它(ta)们(men)都(dou)来自(zi)同一(yi)个工(gong)厂(chang)。这有助(zhu)于避(bi)免因(yin)为产品组(zu)合不(bu)当(dang)而产生(sheng)的错误。易于替(ti)换(huan)产品家(jia)族:当(dang)需要更换整个(ge)产(chan)品(pin)家族(例如(ru),从(cong)Windows风格切换到(dao)Mac风格(ge))时(shi),只(zhi)需要(yao)更换(huan)具(ju)体的工(gong)厂类即可,而无(wu)需修(xiu)改客户端(duan)代码(ma)。
封(feng)装(zhuang)了(le)产(chan)品族(zu)的创建(jian)过(guo)程(cheng):客户(hu)端代(dai)码(ma)与具体产(chan)品类(lei)和具(ju)体工(gong)厂类分离(li)。
难(nan)以添(tian)加(jia)新的产(chan)品类型(xing):如(ru)果需(xu)要(yao)在产品(pin)家族(zu)中(zhong)添加(jia)新的产(chan)品类(lei)型(xing)(例如,增(zeng)加一个“菜单”组(zu)件(jian)),就需(xu)要修改(gai)抽象工厂(chang)接口,并要求所(suo)有具(ju)体(ti)的(de)工厂类(lei)都(dou)实(shi)现(xian)新的工厂(chang)方(fang)法。这会破(po)坏(huai)开(kai)闭(bi)原则(ze)。类的(de)数(shu)量(liang)增加:同(tong)样,产品(pin)种类越多(duo),工厂类和产(chan)品(pin)类的数量也会(hui)越多。
当一个系统不依(yi)赖于用(yong)户创(chuang)建产品,而只依(yi)赖于产品的具(ju)体类(lei)时(shi)。当一(yi)个(ge)系统(tong)需(xu)要(yao)一系列(lie)相(xiang)关(guan)联的(de)产(chan)品对象,并且这些(xie)产品(pin)对(dui)象必(bi)须一(yi)起使(shi)用(yong)时。当你想提(ti)供一(yi)个产(chan)品库,但又(you)不想暴露(lu)其内(nei)部(bu)实现,并(bing)且希(xi)望允许(xu)用(yong)户选(xuan)择这(zhe)个(ge)库的一(yi)个具(ju)体实(shi)现(xian)时(shi)。当需(xu)要创建跨(kua)平台(tai)的(de)应用程(cheng)序时。
抽(chou)象(xiang)工(gong)厂就像是一(yi)个“生(sheng)产家(jia)族”的总代(dai)理。它(ta)负责协(xie)调(diao)和(he)管(guan)理整(zheng)个产(chan)品家(jia)族的(de)生(sheng)产(chan),确保生(sheng)产(chan)出来(lai)的产品(pin)(比(bi)如同一风格(ge)的(de)按钮、文本框(kuang)、复(fu)选框(kuang))能够完(wan)美地协(xie)同工作。当(dang)你想(xiang)要切换(huan)到(dao)另一(yi)个“家族(zu)”(比(bi)如切换界面风格),只(zhi)需要(yao)换(huan)一个总代(dai)理(li)即可(ke)。唯一(yi)的挑(tiao)战是,如果(guo)这个家族突然要增加一个全(quan)新的(de)产品种类,那所(suo)有的总代(dai)理和生产线都(dou)得跟着更(geng)新,这有点反“易扩展(zhan)”的(de)原(yuan)则。
简单(dan)工厂:“万(wan)能(neng)组装(zhuang)师傅”,代码(ma)简洁,适合产(chan)品种(zhong)类不多且(qie)变化(hua)不频(pin)繁(fan)的(de)场景。缺点(dian)是工(gong)厂职(zhi)责(ze)过(guo)重,不(bu)符合(he)开闭(bi)原则(ze)。工(gong)厂(chang)方法:“专属(shu)生产(chan)流(liu)水(shui)线”,将(jiang)创建逻(luo)辑委托(tuo)给(gei)子(zi)类(lei),符合(he)开(kai)闭原(yuan)则(ze),可扩展(zhan)性强(qiang)。缺点是类的数量(liang)可(ke)能增(zeng)多。抽象工厂:“家(jia)族式生产流水(shui)线(xian)”,创建一(yi)系列(lie)相关(guan)联的(de)产(chan)品(pin),保证(zheng)了产(chan)品族的一(yi)致性。
这“三(san)驾马(ma)车”各(ge)有千(qian)秋(qiu),选(xuan)择哪(na)种(zhong)模(mo)式,取(qu)决于你的(de)具体业务需求和对系(xi)统(tong)可扩展(zhan)性的(de)要(yao)求。理解它(ta)们的原理(li)和应用(yong)场(chang)景,能帮(bang)助我们写出更加(jia)灵(ling)活(huo)、健壮(zhuang)、易(yi)于(yu)维护的代(dai)码,让(rang)你(ni)的(de)程序(xu)真(zhen)正(zheng)拥有(you)“工厂(chang)般”的效率(lv)和智(zhi)慧!希望这(zhe)篇文(wen)章能让你(ni)对这几种工(gong)厂(chang)模式(shi)有(you)了更清(qing)晰的认(ren)识。
2025-11-02,陆陆社ios下载在线,中水渔业:上半年归母净利润8631.02万元,同比增长22.12%
1.困困兔宿舍在哪直播,被误读的“外卖战”:独属于中国的消费新时代管理员的监视v30汉化版游戏特色破解,7月深圳住宅热销榜TOP10出炉
图片来源:每经记者 陆文杰
摄
2.小莫骚麦mc骚麦原版mp3+二次元涌动动漫人物,南芯科技:“不差钱”仍欲募资19亿,高溢价收购亏损标的
3.废土猎人41分钟完整版视频+捷克街头网页版入口官网,原油:WTI反弹 特朗普与普京会谈前夕交投清淡
猛烈顶弄H教授学生+老色批影院,华发股份,冲不动了
17c.c-起草html的背景官方网站平台下载IOS安卓手机登录入口
封面图片来源:图片来源:每经记者 名称 摄
如需转载请与《每日经济新闻》报社联系。
未经《每日经济新闻》报社授权,严禁转载或镜像,违者必究。
读者热线:4008890008
特别提醒:如果我们使用了您的图片,请作者与本站联系索取稿酬。如您不希望作品出现在本站,可联系金年会要求撤下您的作品。
欢迎关注每日经济新闻APP