设计模式——工厂模式

最近在准备软件工程的复习,顺便把老师之前讲过的设计模式系统的拿出来再整理一下,今天谈论的主要是设计模式中的“工厂模式”

工厂模式的定义
工厂模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法模式使一个类的实例化延迟到其子类
简单点说就是:如果你去水果店买水果,你只要说出水果的名字,而不用管这水果是具体在哪里哪里生产的,怎么摘下来的等等。这个水果店的运行模式就如同工厂,它只需要提供一个用于创建对象的接口,让子类决定实例化哪一个类。

工厂模式的适用范围
工厂模式适用于以下的三种场合:
1.当一个类不知道它所必须创建的对象的类的时候
2.当一个类希望由它的子类来指定它所创建的对象的时候
3.当将创建对象的职责委托给多个子类中的某一个,并且希望将哪一个子类作为代理者这一信息局部化的时候
(看完这个可能比较懵,可以接着往下看)

参与工厂模式的成员
1.Product(抽象产品):定义工厂方法所创建的对象的接口
2.ConcreateProduct(具体产品):实现Product接口
3.Creator(构造者):声明工厂方法,该方法返回一个Product类型的对象
4.ConcreteCreator(具体构造者):重定义工厂方法以返回一个ConcreteProduct实例

案例的实现(以下均用java代码进行创建)
product

public interface work()
{
   void doWork();
}

*

ConcreteProduct*

public class StudentWork implements Work{
public void doWork()
{
    System.out.println("学生做作业!'');
    }
  public  void doWork()
  {
     System.out.println("老师审批作业!");
     }
   }

Creator

public interface IWorkFactory
{
    Work getwork();
  }

ConcreteCreator

public class StudentWorkFactory implements IWorkFactory
{
    public Work getwork()
     {
          return new StudentWork();
      }
 }
public class TeacherWorkFactory implements IWorkFactory
{  
     public Work getWork()
     {      
         return new TeacherWork();
     }
 }



***Test**
public class Test
{
      public static void main(String[] args)
      {
           IWorkFactory studentWorkFactory=new StudentWorkFactory();
           studentWorkFactory.getwork().doWork();
           IWorkFactory teacherWorkFactory=new TeacherWorkFactory();
           teacherWorkFactory.getWork().doWork();
         }
   }


运行

结果:***
学生做作业!
老师审批作业!


















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值