欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

设计模式 第二章 工厂模式

程序员文章站 2022-03-10 17:13:19
# 设计模式 第二章 工厂模式文章目录# 设计模式 第二章 工厂模式前言一、简单工厂模式1.介绍2.代码示例二、工厂方法模式1.介绍2.代码示例三、抽象工厂模式1.介绍3.代码示例前言工厂模式为创建者模式的一种,就是创建对象时不会暴露创建逻辑,提供统一入口来指向新创建的对象。。工厂模式三种方法: 1. 简单工厂模式 2. 工厂方法模式 3. 抽象工厂模式一、简单工厂模式1.介绍由一个工厂对象决定创建出哪一种产品类的实例。2.代码示例//基类动物public interfa...

# 设计模式 第二章 工厂模式

前言

工厂模式为创建者模式的一种,就是创建对象时不会暴露创建
逻辑,提供统一入口来指向新创建的对象。
。
工厂模式三种方法:
 1. 简单工厂模式
 2. 工厂方法模式
 3. 抽象工厂模式

一、简单工厂模式

1.介绍

指定一个参数由一个工厂对象决定创建出不同的类。

2.代码示例

//基类动物
public interface Animal{
    void eat();
}
public class Person implements Animal{
 	@Override
   public void eat() {
      System.out.println("人吃大米");
   }
}

public class Dog implements Animal{
 	@Override
   public void eat() {
      System.out.println("狗吃狗粮");
   }
}

public class AnimalFactory {
    
   public Animal getAnimal(String type){
      if(type== null){
         return null;
      }        
      if(type.equalsIgnoreCase("person")){
         return new Person();
      } else if(type.equalsIgnoreCase("dog")){
         return new Dog();
      } 
      return null;
   }
}


二、工厂方法模式

1.介绍

定义一个创建对象的抽象方法,由子类决定要实例化的类。

2.代码示例

//基类动物
public interface Animal{
    void eat();
}
public class Person implements Animal{
 	@Override
   public void eat() {
      System.out.println("人吃大米");
   }
}

public class Dog implements Animal{
 	@Override
   public void eat() {
      System.out.println("狗吃狗粮");
   }
}
public interface AnimalFactory {
public Animal getAnimal();
}

//人类工厂,创建人类对象
public class PersonFactory implements AnimalFactory{
    
    @Override
   public Animal getAnimal(){
      return new Person();
   }
}
//狗工厂创建狗对象
public class DogFactory implements AnimalFactory{
    
    @Override
   public Animal getAnimal(){
      return new Dog();
   }
}


三、抽象工厂模式

1.介绍

定义了一个接口用于创建相关或有依赖关系的对象族,
而不用指明具体的类。简单工厂+工厂方法模式。

3.代码示例

//基类动物
public interface Animal{
    void eat();
}
public class Person implements Animal{
 	@Override
   public void eat() {
      System.out.println("人吃大米");
   }
}

public class Dog implements Animal{
 	@Override
   public void eat() {
      System.out.println("狗吃狗粮");
   }
}

public interface Colour{
    String get();
}
public class Yellow implements Colour{
 	@Override
   public String getColour() {
      return "黄色";
   }
}

public class Black implements Colour{
 	@Override
   public String getColour() {
      return "黑色";
   }
}

public interface AnimalFactory {
public Animal getAnimal();
public String getColour();
}

//黄色人类工厂,创建人类对象和获取黄颜色
public class YellowPersonFactory implements AnimalFactory{
    
    @Override
   public Animal getAnimal(){
      return new Person();
   }
	@Override
	public String getColour(){
		return new Yellow ().getColour();
	}
}
//黑色狗工厂,创建狗对象和获取黑颜色
public class BlackDogFactory implements AnimalFactory{
    
    @Override
   public Animal getAnimal(){
      return new Dog();
   }
	@Override
	public String getColour(){
		return new Black().getColour();
	}
}


本文地址:https://blog.csdn.net/wpwdm159357/article/details/109585629

相关标签: 设计模式 java