首页 > 代码库 > 工厂模式(二)

工厂模式(二)

工厂方法模式:简单工厂模式的进一步抽象和推广。工厂方法模式把简单工厂中的具体的工厂类划分为两层:抽象工厂层+具体工厂层,类图如下:

技术分享

涉及到的角色:

抽象产品角色:所有产品的共同父类或共有接口,用以实现多态。

1 //电脑接口
2 public interface Icomputer{
3 }

具体产品角色:实现抽象产品角色所声明的接口。

1 //戴尔电脑
2 public class Dell implements Icomputer{
3 }
1 //联想电脑
2 public class Lenovo implements Icomputer{
3 }

抽象工厂角色:工厂方法模式的核心,创建对象工厂类必须继承或实现它,实际系统中常常是个抽象类。

1 //定义工厂,它是个抽象类
2 public abstract class AbstractFactory{
3     public abstract Icomputer createComputer();
4 }

具体工厂角色:实现了抽象工厂接口的具体类,应用程序调用它以创建具体产品。

1 //戴尔工厂
2 public class DellFactory extends AbstractFactory{
3     @Override
4     public Icomputer createComputer() {
5         return new Dell();
6     }
7 }
1 //联想工厂
2 public class LenovoFactory extends AbstractFactory{
3     @Override
4     public Icomputer createComputer() {
5         return new Lenovo();
6     }
7 }

 应用实例:

 1 //客户端
 2 public class Client{
 3     private void mian() {
 4         AbstractFactory factory = null;
 5         factory = new DellFactory();
 6         factory.createComputer();
 7         factory = new LenovoFactory();
 8         factory.createComputer();
 9     }
10 }

这样做的好处就是只需要有Icomputer.java和AbstractFactory.java编译就能通过,另外当需求变化时只需要增加或者删除相应的类就可以。比如要增加华硕电脑只需增加Asus和AsusFactory俩个类即可。

 

工厂模式(二)