java设计模式-(一)工厂模式

来源:互联网 发布:计生委招聘 知乎 编辑:程序博客网 时间:2024/05/17 09:39

java设计模式-(一)工厂模式

简单工厂模式

一个专门用来创建其他类的模式,也叫做静态工厂模式,因为这种方式的获取方法都是静态的,使用时候无需new处对象。

public interface Animal {    void sound();}

这里定义一个Animal接口来实现animal的基本方法。

public class Pig implements Animal{     //实现animal接口    @Override    public void sound() {        System.out.print("Hi,I am a Pig From Factory");    }}public class Dog implements Animal {    @Override    public void sound() {        System.out.print("Hi,I am a Dog From Factory");    }}

这里实现了Animal接口

public class AnimalFactory {    public Animal getAnimal(String name){        if(name.equals("pig")){            return new Pig();        }        else if(name.equals("dog")){            return new Dog();        }        return null;    }}

这里通过AnimalFactory 根据不同的字段进行返回不同的类。

这里一旦通过输入的字符串进行查询,如果输入的字符串错误则会出现返回空的情况,同时不利于维护,一旦有新的类加入,就需要对工厂类进行修改,但是其将类的创建和工作分开,提高了系统的灵活性。而且使用这种方式无法创造出基于继承的结构。

抽象工厂方法模式

将工厂分开的方式,一个工厂专门的生产一种类,上面的工厂如果添加了产品,需要对工厂进行修改,这里通过实现具体的类和工厂的方法,如果需要具体的类直接就可以添加具体的类和工厂。

public interface Animal {    void sound();}public interface Factory {    Animal created();}

定义两个接口,animal和factory

public class DogFactory implements Factory{    @Override    public Animal created() {        return new Dog();    }}public class PigFactor implements Factory {    @Override    public Animal created() {        return new Pig();    }}

两个工厂

测试代码

  public void test(){        Factory factory=null;        factory=new DogFactory();        factory.created().sound();        factory=new PigFactor();        factory.created().sound();    }

这种方式将工厂和具体的产品进行了整合,这也避免了错误 的发生,同时对于需要添加的功能可以直接通过编写具体的类实现,但是过于繁杂,每一次的添加都需要添加产品和工厂类。

原创粉丝点击