设计模式 第三章 工厂模式

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

前言

工厂模式为创建者模式的一种,就是创建对象时不会暴露创建
逻辑,提供统一入口来指向新创建的对象。
。
工厂模式三种方法:
 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();
	}
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值