设计模式 第二章 工厂模式
程序员文章站
2022-06-19 15:06:36
# 设计模式 第二章 工厂模式文章目录# 设计模式 第二章 工厂模式前言一、简单工厂模式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