设计模式之简单工厂模式

什么是简单工厂模式

简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。

简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。

简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。

 

该模式中包含的角色及其职责:

 

抽象产品(Product)角色

简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。

//抽象产品角色
public interface people {
      public void say();
}

 

具体产品(Concrete Product)角色

是简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的实例。

//具体产品角色
public class chinese implements people {
      public void say() {
           System.out.println("说中国话");
     }
}
 
//具体产品角色
public class american implements people {
      public void say() {
           System.out.println("speak english");
     }
}

 

工厂(Creator)角色

简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类的创建产品类的方法可以被外界直接调用,创建所需的产品对象。

//工厂类角色
public class peopleFactory {
      //工厂类是具体产品类角色直接调用者。
      public static people create(int type) {
           if (type== 1) {
                  return new chinese();
           } else if (type == 2){
                 return new american();
           }
     }
 }

 

客户端(Client)

调用工厂类产生实例,并调用实例的方法进行相应工作。

 //客户端
public class test {
      //调用工厂类产生实例,并调用实例的方法进行相应工作
      public static void main(String []args) {
           people p = peopleFactory.create(1);
           p.say();
           p = peopleFactory.create(2);
            p.say();
     }
 }

  

制造人类工厂实例(完整代码):

//抽象产品角色
public interface people {
      public void say();
}
 
//具体产品角色
public class chinese implements people {
      public void say() {
           System.out.println("说中国话");
     }
}
 
//具体产品角色
public class american implements people {
      public void say() {
           System.out.println("speak english");
     }
}

 //工厂类角色
public class peopleFactory {
      //工厂类是具体产品类角色直接调用者。
      public static people create(int type) {
           if (type== 1) {
                  return new chinese();
           } else if (type == 2){
                 return new american();
           }
     }
 }

 //客户端
public class test {
      //调用工厂类产生实例,并调用实例的方法进行相应工作
      public static void main(String []args) {
           people p = peopleFactory.create(1);
           p.say();
           p = peopleFactory.create(2);
            p.say();
     }
 }

  

 

posted @ 2017-11-25 00:20  _sanjun  阅读(153)  评论(0编辑  收藏  举报