设计模式之简单工厂模式
先看代码
classGcFactory{publicvoiddemo(){FactoryftFac=newFactory();IFactoryif1=ftFac.getInstance("demo1");if1.run();IFactoryif2=ftFac.getInstance("demo2");if2.run();}}interfaceIFactory{publicvoidrun();}classDemo1:IFactory{publicvoidrun(){Console.WriteLine("演示一");}}classDemo2:IFactory{publicvoidrun(){Console.WriteLine("演示二");}}///<summary>///创建对象,此对象就是生产IFactory接口的对象的///</summary>classFactory{//创建IFactory接口实例publicIFactorygetInstance(stringobj){if(obj.Equals("demo1")){returnnewDemo1();}elseif(obj.Equals("demo2")){returnnewDemo2();}returnnull;}}
这样就直接创建了两个类。
什么是简单工厂模式?举个例子,现实中有很多工厂是负责制造产品的,相同的代码里面的也是生产对象的,而现实中的工厂里面怎么制造的产品,是不需要让别人知道,别人能知道的就是这个产品本身,不需要制作的过程。代码里面也一样,当用new关键字创建一个对象时,此时当前类就会密切的与创建的类发生耦合,后期比如修改需求时,这些类都需要去修改,而面向对象的思想其一就是封装,简化代码,这样的话就不符合面向对象的原则了,出现的这个简单工厂模式就很好的解决了当前的问题。
优缺点。
工厂模式虽然很好的解决了类与类之间的耦合,但是当new一个对象的时候,后期修改这个对象后,工厂方法里面的对象也要修改,这个就带来了一定的坏处。使用抽象工厂类就可以解决这个问题。
java和.net的实现方式其实是一样的。
publicclassDemo{publicstaticvoidmain(String[]args){FactoryImpfimp=newFactoryImp();FactoryInterfi=fimp.getInstance("demo1");fi.run();}}interfaceFactoryInter{publicvoidrun();}classDemo1implementsFactoryInter{@Overridepublicvoidrun(){System.out.println("演示一");}}classDemo2implementsFactoryInter{@Overridepublicvoidrun(){System.out.println("演示二");}}//创建对象,此对象就是生产IFactory接口的对象的classFactoryImp{//创建IFactory接口实例publicFactoryIntergetInstance(Stringobj){switch(obj){case"demo1":returnnewDemo1();case"demo2":returnnewDemo2();}returnnull;}}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。