设计模式——工厂设计模式

1.工厂方法模式

概述

工厂方法模式中抽象工厂类负责定义创建对象的接口,具体对象的创建工作由继承抽象工厂的具体类实现。
优点
客户端不需要在负责对象的创建,从而明确了各个类的职责。
如果有新的对象增加,只需要增加一个具体的类和具体的工厂类即可,不影响已有的代码。
后期维护容易,增强了系统的扩展性。
缺点
需要额外的编写代码,增加了工作量。

工厂方法模式创建对象实例

//主方法
public static void main(String[] args){
//使用工厂方法模式创建对象
DogFactory dogFactory=new DogFactory();
Animal dog=dogFactory.createAnimal();
dog.eat();
PigFactory pigFactory=new PigFactory();
Animal pig=pigFactory.createAnimal();
pig.eat();
}


//声明一个抽象类
public abstract class Animal{
//声明一个抽象方法
public abstract void eat();
}

//声明一个Dog类继承上面的动物类
public class Dog extends Animal{
public void eat(){
System.out.println("狗吃肉 ....");
}
}

//声明一个Pig类继承上面的动物类
public class Pig extends Animal{
public void eat(){
System.out.println("猪吃青菜 ....");
}
}

//声明一个抽象工厂类
public abstract class AnimalFactory{
public abstract Animal createAnimal();
//public abstract Animal newAnimal();//和上面方法效果一样,任选其一
}

//声明狗工厂继承抽象工厂类
public class DogFactory extends AnimalFactory{
public Animal createAnimal(){
return new Dog();
}
}

//声明猪工厂继承抽象工厂类
public class PigFactory extends AnimalFactory{
public Animal createAnimal(){
return new Pig();
}
}

2.简单工厂模式

1.概述

工厂方法模式又叫静态工厂模式,它定义一个具体的工厂类负责创建一个类的实例。
优点:
客户端不需要在负责对象的创建,从而明确了各个类的职责。
缺点
这个静态工厂类负责所有对象的创建,如果有新的对象增加,或者某些对象的创建方式不同,就需要不断地修改工厂类,不利于后期的维护。

2.案例:通过简单工厂模式创建对象实例

//主方法
public static void main(String[] args){
//通过静态工厂类创建对象
Dog dog=AnimalFactory.createDog();
Pig pig=AnimalFactory.createPig();
dog.eat();
pig.eat();
}

//声明一个抽象类
public abstract class Animal{
//声明一个抽象方法
public abstract void eat();
}

//声明一个Dog类继承上面的动物类
public class Dog extends Animal{
public void eat(){
System.out.println("狗吃肉 ....");
}
}

//声明一个Pig类继承上面的动物类
public class Pig extends Animal{
public void eat(){
System.out.println("猪吃青菜 ....");
}
}

//创建动物工厂类
public class AnimalFactory{
public static Dog createDog(){
Dog dog=new Dog();
return dog;
}
public static Pig createPig(){
Pig pig=new Pig();
return pig;
}
}
发布了89 篇原创文章 · 获赞 0 · 访问量 1543

猜你喜欢

转载自blog.csdn.net/ShiZaolin/article/details/104261502