工厂模式浅述

原创 2017年10月06日 16:19:01

使用设计模式的目的
1、缩短开发周期
2、降低维护成本
3、应用程序和内部接口集成更轻松

工厂模式包括
简单工厂模式、工厂方法模式、抽象工厂模式

1、简单工场模式
由抽象产品角色、具体产品角色、工厂角色、客户端角色组成;
由一个工厂对象决定创建出哪一种产品类的实例;

public interface people{                 //抽象产品
      public void say();
}


public class chinese implements people{          //具体产品
      public void say(){
           System.out.println("说中国话");
     }
}


public class american implements people{               //具体产品
      public void say(){
           System.out.println("speak english");
     }
}

public class peopleFactory{                           //工厂
      public static people create(int type){
           if(type==1){
                  return new chinese();
           }else if(type==2){
                 return new american();
           }
     }
 }

public class test{                                   //客户端
      public static void main(String []args){
           people p=peopleFactory.create(1);
           p.say();
           p=peopleFactory.create(2);
            p.say();
     }
 }

缺点:在具体产品类中,决定了产品实例的产生;在工厂类中,根据传入参数,决定哪种产品的构造,其中高度耦合;当其增加另外需求产品时,需要改动源码(工场类)及新增产品类;
优点:明确各个类的分工,职责,有利于软件结构的优化

2、工场模式
由抽象产品角色、具体产品角色、抽象工厂角色、具体工场角色,客户端角色组成;
在简单工场的基础上,增加了良好的扩展性,灵活性

public interface Icar{
           public void docar();
}

public class bwm implements Icar{
          public void docar(){
               System.out.println("我是宝马,别摸我");
          }
}

public class buick implements Icar{
          public void docar(){
               System.out.println("我是别克,很酷");
          }
}


public interface Icarfactory{
          public Icar createCar();
} 

public class bmwFactory implements Icarfactory{
          public Icar createCar(){
                   return new bwm();
          }
} 

public class buickFactory implements Icarfactory{
          public Icar createCar(){
                   return new buick();
          }
} 


public class test{
      public static void main(String []args){
           Icarfactory factory=new bmwFactory();
           Icar bwm= factory.createCar(); 
           bwm.docar();

           factory=new buickFactory();
           Icar buick= factory.createCar(); 
           buick.docar();

     }
 }

优点:通过实现产品和工厂接口、及一一对应,使子类提供挂钩,使应用更灵活;
同时,屏蔽产品类,客户不用关心具体产品实现,只要实现接口即可;并且解除了简单工厂中工厂角色的耦合;在扩展情况下,无需更改源代码,只需增加对应的工厂和产品类;

3、抽象产品模式

此模式是针对同一产品中有不同的款型(产品簇),其构造方法不同的情况下;它在工厂模式的基础中,在抽象工厂中增加不同的产品属性,并同时增加产品属性对应的抽象产品类。
这里写图片描述

版权声明:欢迎转载,注明作者和出处就好!如果不喜欢或文章存在明显的谬误,请留言说明原因再踩哦,谢谢,不断进步! https://blog.csdn.net/qq_34417408/article/details/78165741

Javascript 设计模式之工厂模式【专家辅导】

-
  • 1970年01月01日 08:00

ITU_TG_729AnnexA语音压缩编码算法的浅述

  • 2010年05月23日 10:38
  • 1.12MB
  • 下载

浅述机电一体化链条输送设备设计

  • 2011年07月08日 11:53
  • 162KB
  • 下载

〔波〕格林尼斯基:控制论浅述

  • 2008年11月23日 14:25
  • 2.75MB
  • 下载

动态污点分析隐式流--动静结合的解决方法

我们知道,对于动态污点分析来说,检测所有的信息流动是不可能的。因为污点只沿着实际执行的路径流动,特别地,动态污点分析会漏报一些implicit flows(控制流)。 一个想法是采用动静结合的方法,...
  • gengzhikui1992
  • gengzhikui1992
  • 2016-05-15 11:04:29
  • 700

Widget工作原理浅述

长按Launcher,Launcher会发出Intent调起AppWidgetPickActivity.这个activity就是我们看到的...
  • Ferrero_xx
  • Ferrero_xx
  • 2014-06-11 17:51:31
  • 593

实时数据库--概念浅述

实时数据库(RTDB-Real Time DataBase)是数据库系统发展的一个分支,是数据库技术结合实时处理技术产生的。    实时数据库系统是开发实时控制系统、数据采集系统、CIMS系统等的支撑...
  • Herman_He
  • Herman_He
  • 2015-12-07 13:40:03
  • 386

自定义控件 浅述

自定义控件 1. 在res->values->attrs.xml中声明你要自定义的属性(如果没有 attrs.xml可以新建一个) 例如这个 其中 代...
  • qq_22994781
  • qq_22994781
  • 2016-05-30 16:11:22
  • 119

javascript浅述

javascript:http://blog.csdn.net/xiaowei1122/article/details/7284478
  • sangbody
  • sangbody
  • 2012-02-22 19:22:31
  • 149

计算机语言浅述

计算机语言浅述       如果您想学习编程,却又不知从何入手,那么您不妨看看下面的几种学习方案,可能会给您一些启示吧!   方案一 Basic语言 & Visual B...
  • weixin_40668918
  • weixin_40668918
  • 2017-10-17 12:07:32
  • 24
收藏助手
不良信息举报
您举报文章:工厂模式浅述
举报原因:
原因补充:

(最多只允许输入30个字)