精华内容
参与话题
问答
  • 在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的。但是在一些情况下, new操作符直接生成对象会带来一些问题。举例来说, 许多类型对象的创造需要一系列的步骤: 你...

     在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的。但是在一些情况下, new操作符直接生成对象会带来一些问题。举例来说, 许多类型对象的创造需要一系列的步骤: 你可能需要计算或取得对象的初始设置; 选择生成哪个子对象实例; 或在生成你需要的对象之前必须先生成一些辅助功能的对象。 在这些情况,新对象的建立就是一个 “过程”,不仅是一个操作,像一部大机器中的一个齿轮传动。

     

    模式的问题:你如何能轻松方便地构造对象实例,而不必关心构造对象实例的细节和复杂过程呢?

    解决方案:建立一个工厂来创建对象

    实现:

    一、引言
        1)还没有工厂时代:假如还没有工业革命,如果一个客户要一款宝马车,一般的做法是客户去创建一款宝马车,然后拿来用。
        2)简单工厂模式:后来出现工业革命。用户不用去创建宝马车。因为客户有一个工厂来帮他创建宝马.想要什么车,这个工厂就可以建。比如想要320i系列车。工厂就创建这个系列的车。即工厂可以创建产品。
        3)工厂方法模式时代:为了满足客户,宝马车系列越来越多,如320i,523i,30li等系列一个工厂无法创建所有的宝马系列。于是由单独分出来多个具体的工厂。每个具体工厂创建一种系列。即具体工厂类只能创建一个具体产品。但是宝马工厂还是个抽象。你需要指定某个具体的工厂才能生产车出来。

       4)抽象工厂模式时代:随着客户的要求越来越高,宝马车必须配置空调。于是这个工厂开始生产宝马车和需要的空调。

       最终是客户只要对宝马的销售员说:我要523i空调车,销售员就直接给他523i空调车了。而不用自己去创建523i空调车宝马车.

       这就是工厂模式。

    二、分类 
            工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。 
    工厂模式可以分为三类: 

    1)简单工厂模式(Simple Factory) 
    2)工厂方法模式(Factory Method) 
    3)抽象工厂模式(Abstract Factory) 

     这三种模式从上到下逐步抽象,并且更具一般性。 
            GOF在《设计模式》一书中将工厂模式分为两类:工厂方法模式(Factory Method)与抽象工厂模式(Abstract Factory)。

            将简单工厂模式(Simple Factory)看为工厂方法模式的一种特例,两者归为一类。 

    三、区别 
    工厂方法模式:
    一个抽象产品类,可以派生出多个具体产品类。   
    一个抽象工厂类,可以派生出多个具体工厂类。   
    每个具体工厂类只能创建一个具体产品类的实例。
    抽象工厂模式:
    多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。   
    一个抽象工厂类,可以派生出多个具体工厂类。   
    每个具体工厂类可以创建多个具体产品类的实例。   
    区别:
    工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个。   
    工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个。
    两者皆可。 

     四、简单工厂模式 
    建立一个工厂(一个函数或一个类方法)来制造新的对象。
    分布说明引子:从无到有。客户自己创建宝马车,然后拿来用。

     

     

    public class BMW320 {
    	public BMW320(){
    		System.out.println("制造-->BMW320");
    	}
    }
    
    public class BMW523 {
    	public BMW523(){
    		System.out.println("制造-->BMW523");
    	}
    }
    
    public class Customer {
    	public static void main(String[] args) {
    		BMW320 bmw320 = new BMW320();
    		BMW523 bmw523 = new BMW523();
    	}
    }
    

    客户需要知道怎么去创建一款车,客户和车就紧密耦合在一起了.为了降低耦合,就出现了工厂类,把创建宝马的操作细节都放到了工厂里面去,客户直接使用工厂的创建工厂方法,传入想要的宝马车型号就行了,而不必去知道创建的细节.这就是工业革命了:简单工厂模式

    即我们建立一个工厂类方法来制造新的对象。如图:

    产品类:

    abstract class BMW {
    	public BMW(){
    		
    	}
    }
    
    public class BMW320 extends BMW {
    	public BMW320() {
    		System.out.println("制造-->BMW320");
    	}
    }
    public class BMW523 extends BMW{
    	public BMW523(){
    		System.out.println("制造-->BMW523");
    	}
    }
    

    工厂类:

    public class Factory {
    	public BMW createBMW(int type) {
    		switch (type) {
    		
    		case 320:
    			return new BMW320();
    
    		case 523:
    			return new BMW523();
    
    		default:
    			break;
    		}
    		return null;
    	}
    }


    客户类:

    public class Customer {
    	public static void main(String[] args) {
    		Factory factory = new Factory();
    		BMW bmw320 = factory.createBMW(320);
    		BMW bmw523 = factory.createBMW(523);
    	}
    }
    

       简单工厂模式又称静态工厂方法模式。重命名上就可以看出这个模式一定很简单。它存在的目的很简单:定义一个用于创建对象的接口。 
          先来看看它的组成: 
             1) 工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑,用来创建产品
             2) 抽象产品角色:它一般是具体产品继承的父类或者实现的接口。         
             3) 具体产品角色:工厂类所创建的对象就是此角色的实例。在java中由一个具体类实现。 
            
            下面我们从开闭原则(对扩展开放;对修改封闭)上来分析下简单工厂模式。当客户不再满足现有的车型号的时候,想要一种速度快的新型车,只要这种车符合抽象产品制定的合同,那么只要通知工厂类知道就可以被客户使用了。所以对产品部分来说,它是符合开闭原则的;但是工厂部分好像不太理想,因为每增加一种新型车,都要在工厂类中增加相应的创建业务逻辑(createBMW(int type)方法需要新增case),这显然是违背开闭原则的。可想而知对于新产品的加入,工厂类是很被动的。对于这样的工厂类,我们称它为全能类或者上帝类。 
            我们举的例子是最简单的情况,而在实际应用中,很可能产品是一个多层次的树状结构。由于简单工厂模式中只有一个工厂类来对应这些产品,所以这可能会把我们的上帝累坏了,也累坏了我们这些程序员。
            于是工厂方法模式作为救世主出现了。 工厂类定义成了接口,而每新增的车种类型,就增加该车种类型对应工厂类的实现,这样工厂的设计就可以扩展了,而不必去修改原来的代码。
    五、工厂方法模式 
            工厂方法模式去掉了简单工厂模式中工厂方法的静态属性,使得它可以被子类继承。这样在简单工厂模式里集中在工厂方法上的压力可以由工厂方法模式里不同的工厂子类来分担。 
    工厂方法模式组成: 
           1)抽象工厂角色: 这是工厂方法模式的核心,它与应用程序无关。是具体工厂角色必须实现的接口或者必须继承的父类。在java中它由抽象类或者接口来实现。 
           2)具体工厂角色:它含有和具体业务逻辑有关的代码。由应用程序调用以创建对应的具体产品的对象。 
           3)抽象产品角色:它是具体产品继承的父类或者是实现的接口。在java中一般有抽象类或者接口来实现。 
           4)具体产品角色:具体工厂角色所创建的对象就是此角色的实例。在java中由具体的类来实现。 
           工厂方法模式使用继承自抽象工厂角色的多个子类来代替简单工厂模式中的“上帝类”。正如上面所说,这样便分担了对象承受的压力;而且这样使得结构变得灵活 起来——当有新的产品产生时,只要按照抽象产品角色、抽象工厂角色提供的合同来生成,那么就可以被客户使用,而不必去修改任何已有 的代码。可以看出工厂角色的结构也是符合开闭原则的! 

    代码如下: 

    产品类:

    abstract class BMW {
    	public BMW(){
    		
    	}
    }
    public class BMW320 extends BMW {
    	public BMW320() {
    		System.out.println("制造-->BMW320");
    	}
    }
    public class BMW523 extends BMW{
    	public BMW523(){
    		System.out.println("制造-->BMW523");
    	}
    }


    创建工厂类:

    interface FactoryBMW {
    	BMW createBMW();
    }
    
    public class FactoryBMW320 implements FactoryBMW{
    
    	@Override
    	public BMW320 createBMW() {
    
    		return new BMW320();
    	}
    
    }
    public class FactoryBMW523 implements FactoryBMW {
    	@Override
    	public BMW523 createBMW() {
    
    		return new BMW523();
    	}
    }
    


    客户类:

    public class Customer {
    	public static void main(String[] args) {
    		FactoryBMW320 factoryBMW320 = new FactoryBMW320();
    		BMW320 bmw320 = factoryBMW320.createBMW();
    
    		FactoryBMW523 factoryBMW523 = new FactoryBMW523();
    		BMW523 bmw523 = factoryBMW523.createBMW();
    	}
    }


     工厂方法模式仿佛已经很完美的对对象的创建进行了包装,使得客户程序中仅仅处理抽象产品角色提供的接口,但使得对象的数量成倍增长。当产品种类非常多时,会出现大量的与之对应的工厂对象,这不是我们所希望的。

    参考http://blog.csdn.net/hguisu/article/details/7505909

     

    以上就是简单工厂模式,工厂方法模式,抽象工厂模式在这里

     

    更多设计模式:23种设计模式系列

    作者:jason0539

    博客:http://blog.csdn.net/jason0539(转载请说明出处)

     

    展开全文
  • 设计模式系列二(工厂方法

    万次阅读 2019-03-16 01:03:49
    请移步链接:https://www.javaclub.club/blog/article.html?id=29
    请移步链接:https://aiximiao.com/article?id=5
    
    展开全文
  • 定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。 类型:创建类模式 类图: 工厂方法模式代码 [java]view plaincopy interfaceIProduct{ ...

    简单工厂模式

           简单工厂模式(Simple Factory Pattern)属于类的创新型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern),是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。

    简单工厂模式的UML图: 

           简单工厂模式中包含的角色及其相应的职责如下:

           工厂角色(Creator):这是简单工厂模式的核心,由它负责创建所有的类的内部逻辑。当然工厂类必须能够被外界调用,创建所需要的产品对象。

           抽象(Product)产品角色:简单工厂模式所创建的所有对象的父类,注意,这里的父类可以是接口也可以是抽象类,它负责描述所有实例所共有的公共接口。

           具体产品(Concrete Product)角色:简单工厂所创建的具体实例对象,这些具体的产品往往都拥有共同的父类。

    简单工厂模式深入分析

           简单工厂模式解决的问题是如何去实例化一个合适的对象。

           简单工厂模式的核心思想就是:有一个专门的类来负责创建实例的过程。

           具体来说,把产品看着是一系列的类的集合,这些类是由某个抽象类或者接口派生出来的一个对象树。而工厂类用来产生一个合适的对象来满足客户的要求。

           如果简单工厂模式所涉及到的具体产品之间没有共同的逻辑,那么我们就可以使用接口来扮演抽象产品的角色;如果具体产品之间有功能的逻辑或,我们就必须把这些共同的东西提取出来,放在一个抽象类中,然后让具体产品继承抽象类。为实现更好复用的目的,共同的东西总是应该抽象出来的。

           在实际的的使用中,抽闲产品和具体产品之间往往是多层次的产品结构,如下图所示:

    简单工厂模式使用场景分析及代码实现: 

           GG请自己的女朋友和众多美女吃饭,但是GG自己是不会做饭的或者做的饭很不好,这说明GG不用自己去创建各种食物的对象;各个美女都有各自的爱好,到麦当劳后她们喜欢吃什么直接去点就行了,麦当劳就是生产各种食物的工厂,这时候GG不用自己动手,也可以请这么多美女吃饭,所要做的就是买单O(∩_∩)O哈哈~,其UML图如下所示:

    实现代码如下:

           新建立一个食物的接口:

    /*
     * 产品的抽象接口
     */
    public interface Food {
        //获得相应的食物
        public void get();
    
    }

    接下来建立具体的产品:麦香鸡和薯条

    /*
     * 麦香鸡对抽象产品接口的实现
     */
    public class McChicken implements Food{
        /*
         * 获取一份麦香鸡
         */
        public void get(){
            System.out.println("我要一份麦香鸡");
        }
    }
    /*
     * 薯条对抽象产品接口的实现
     */
    public class Chips implements Food{
        /*
         * 获取一份薯条
         */
        public void get(){
            System.out.println("我要一份薯条");
        }
    }

    现在建立一个食物加工工厂:

    public class FoodFactory {
        public static Food getFood(String type) throws Exception {
            if(type.equalsIgnoreCase("mcchicken")) {
                return McChicken.class.newInstance();
            } else if(type.equalsIgnoreCase("chips")) {
                return Chips.class.newInstance();
            } else {
                System.out.println("哎呀!找不到相应的实例化类啦!");
                return null;
            }
        }
    }

    最后测试:

    public class SimpleFactoryTest {
        public static void main(String[] args) throws Exception {
            //实例化各种食物
            Food mcChicken = FoodFactory.getFood("mcChicken");
            Food chips = FoodFactory.getFood("chips");
            Food eggs = FoodFactory.getFood("eggs");
            //获取食物
            if(mcChicken!=null){
                mcChicken.get();
            }
            if(chips!=null){
                chips.get();
            }
            if(eggs!=null){
                eggs.get();
            }
        }
    }

    简单工厂模式的优缺点分析: 

           优点:工厂类是整个模式的关键所在。它包含必要的判断逻辑,能够根据外界给定的信息,决定究竟应该创建哪个具体类的对象。用户在使用时可以直接根据工厂类去创建所需的实例,而无需了解这些对象是如何创建以及如何组织的。有利于整个软件体系结构的优化。

          缺点:由于工厂类集中了所有实例的创建逻辑,这就直接导致一旦这个工厂出了问题,所有的客户端都会受到牵连;而且由于简单工厂模式的产品室基于一个共同的抽象类或者接口,这样一来,但产品的种类增加的时候,即有不同的产品接口或者抽象类的时候,工厂类就需要判断何时创建何种种类的产品,这就和创建何种种类产品的产品相互混淆在了一起,违背了单一职责,导致系统丧失灵活性和可维护性。而且更重要的是,简单工厂模式违背了“开放封闭原则”,就是违背了“系统对扩展开放,对修改关闭”的原则,因为当我新增加一个产品的时候必须修改工厂类,相应的工厂类就需要重新编译一遍。

          总结一下:简单工厂模式分离产品的创建者和消费者,有利于软件系统结构的优化;但是由于一切逻辑都集中在一个工厂类中,导致了没有很高的内聚性,同时也违背了“开放封闭原则”。另外,简单工厂模式的方法一般都是静态的,而静态工厂方法是无法让子类继承的,因此,简单工厂模式无法形成基于基类的继承树结构。

    简单工厂模式的实际应用简介: 

           作为一个最基本和最简单的设计模式,简单工厂模式却有很非常广泛的应用,我们这里以Java中的JDBC操作数据库为例来说明。

            JDBC是SUN公司提供的一套数据库编程接口API,它利用Java语言提供简单、一致的方式来访问各种关系型数据库。Java程序通过JDBC可以执行SQL语句,对获取的数据进行处理,并将变化了的数据存回数据库,因此,JDBC是Java应用程序与各种关系数据进行对话的一种机制。用JDBC进行数据库访问时,要使用数据库厂商提供的驱动程序接口与数据库管理系统进行数据交互。

    客户端要使用使用数据时,只需要和工厂进行交互即可,这就导致操作步骤得到极大的简化,操作步骤按照顺序依次为:注册并加载数据库驱动,一般使用Class.forName();创建与数据库的链接Connection对象;创建SQL语句对象preparedStatement(sql);提交SQL语句,根据实际情况使用executeQuery()或者executeUpdate();显示相应的结果;关闭数据库。

    工厂方法模式

     定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。

     

    代码示例

    interface IProduct {  
        public void productMethod();  
    }  
      
    class Product implements IProduct {  
        public void productMethod() {  
            System.out.println("产品");  
        }  
    }  
      
    interface IFactory {  
        public IProduct createProduct();  
    }  
      
    class Factory implements IFactory {  
        public IProduct createProduct() {  
            return new Product();  
        }  
    }  
      
    public class Client {  
        public static void main(String[] args) {  
            IFactory factory = new Factory();  
            IProduct prodect = factory.createProduct();  
            prodect.productMethod();  
        }  
    }  

    工厂模式:

            首先需要说一下工厂模式。工厂模式根据抽象程度的不同分为三种:简单工厂模式(也叫静态工厂模式)、本文所讲述的工厂方法模式、以及抽象工厂模式。工厂模式是编程中经常用到的一种模式。它的主要优点有:

    • 可以使代码结构清晰,有效地封装变化。在编程中,产品类的实例化有时候是比较复杂和多变的,通过工厂模式,将产品的实例化封装起来,使得调用者根本无需关心产品的实例化过程,只需依赖工厂即可得到自己想要的产品。
    • 对调用者屏蔽具体的产品类。如果使用工厂模式,调用者只关心产品的接口就可以了,至于具体的实现,调用者根本无需关心。即使变更了具体的实现,对调用者来说没有任何影响。
    • 降低耦合度。产品类的实例化通常来说是很复杂的,它需要依赖很多的类,而这些类对于调用者来说根本无需知道,如果使用了工厂方法,我们需要做的仅仅是实例化好产品类,然后交给调用者使用。对调用者来说,产品所依赖的类都是透明的。

     

    工厂方法模式:

           通过工厂方法模式的类图可以看到,工厂方法模式有四个要素:

    • 工厂接口。工厂接口是工厂方法模式的核心,与调用者直接交互用来提供产品。在实际编程中,有时候也会使用一个抽象类来作为与调用者交互的接口,其本质上是一样的。
    • 工厂实现。在编程中,工厂实现决定如何实例化产品,是实现扩展的途径,需要有多少种产品,就需要有多少个具体的工厂实现。
    • 产品接口。产品接口的主要目的是定义产品的规范,所有的产品实现都必须遵循产品接口定义的规范。产品接口是调用者最为关心的,产品接口定义的优劣直接决定了调用者代码的稳定性。同样,产品接口也可以用抽象类来代替,但要注意最好不要违反里氏替换原则。
    • 产品实现。实现产品接口的具体类,决定了产品在客户端中的具体行为。

            前文提到的简单工厂模式跟工厂方法模式极为相似,区别是:简单工厂只有三个要素,他没有工厂接口,并且得到产品的方法一般是静态的。因为没有工厂接口,所以在工厂实现的扩展性方面稍弱,可以算所工厂方法模式的简化版,关于简单工厂模式,在此一笔带过。

          

    适用场景:

            不管是简单工厂模式,工厂方法模式还是抽象工厂模式,他们具有类似的特性,所以他们的适用场景也是类似的。

            首先,作为一种创建类模式,在任何需要生成复杂对象的地方,都可以使用工厂方法模式。有一点需要注意的地方就是复杂对象适合使用工厂模式,而简单对象,特别是只需要通过new就可以完成创建的对象,无需使用工厂模式。如果使用工厂模式,就需要引入一个工厂类,会增加系统的复杂度。

           其次,工厂模式是一种典型的解耦模式,迪米特法则在工厂模式中表现的尤为明显。假如调用者自己组装产品需要增加依赖关系时,可以考虑使用工厂模式。将会大大降低对象之间的耦合度。

           再次,由于工厂模式是依靠抽象架构的,它把实例化产品的任务交由实现类完成,扩展性比较好。也就是说,当需要系统有比较好的扩展性时,可以考虑工厂模式,不同的产品用不同的实现工厂来组装。

    典型应用

           要说明工厂模式的优点,可能没有比组装汽车更合适的例子了。场景是这样的:汽车由发动机、轮、底盘组成,现在需要组装一辆车交给调用者。假如不使用工厂模式,代码如下:

    class Engine {  
        public void getStyle(){  
            System.out.println("这是汽车的发动机");  
        }  
    }  
    class Underpan {  
        public void getStyle(){  
            System.out.println("这是汽车的底盘");  
        }  
    }  
    class Wheel {  
        public void getStyle(){  
            System.out.println("这是汽车的轮胎");  
        }  
    }  
    public class Client {  
        public static void main(String[] args) {  
            Engine engine = new Engine();  
            Underpan underpan = new Underpan();  
            Wheel wheel = new Wheel();  
            ICar car = new Car(underpan, wheel, engine);  
            car.show();  
        }  
    }  

            可以看到,调用者为了组装汽车还需要另外实例化发动机、底盘和轮胎,而这些汽车的组件是与调用者无关的,耦合度太高。并且非常不利于扩展。另外,本例中发动机、底盘和轮胎还是比较具体的,在实际应用中,可能这些产品的组件也都是抽象的,调用者根本不知道怎样组装产品。假如使用工厂方法的话,整个架构就显得清晰了许多。

    interface IFactory {  
        public ICar createCar();  
    }  
    class Factory implements IFactory {  
        public ICar createCar() {  
            Engine engine = new Engine();  
            Underpan underpan = new Underpan();  
            Wheel wheel = new Wheel();  
            ICar car = new Car(underpan, wheel, engine);  
            return car;  
        }  
    }  
    public class Client {  
        public static void main(String[] args) {  
            IFactory factory = new Factory();  
            ICar car = factory.createCar();  
            car.show();  
        }  
    }  

            使用工厂方法后,调用端的耦合度大大降低了。并且对于工厂来说,是可以扩展的,以后如果想组装其他的汽车,只需要再增加一个工厂类的实现就可以。无论是灵活性还是稳定性都得到了极大的提高。

     

    展开全文
  • 设计模式系列一(简单工厂方法

    万次阅读 2019-03-16 01:03:10
    请移步链接:https://www.javaclub.club/blog/article.html?id=28
    请移步链接:https://aiximiao.com/article?id=4
    
    展开全文
  • 设计模式系列三(抽象工厂方法

    万次阅读 2019-03-16 01:04:17
    请移步链接:https://www.javaclub.club/blog/article.html?id=30
  • 工厂方法

    千次阅读 2014-03-11 21:04:54
    工厂方法和简单工厂方法看起来大部分是一样的,只是在工厂这里,简单工厂是通过Switch语句进行选择然后实例化对象,而在工厂方法里面,对工厂进一步抽象,定义了一个工厂接口,让每一类产品对应一个工厂接口,在实例...
  • 工厂方法模式中,工厂方法用来创建客户所需要的产品,同时还向客户隐藏了哪种具体产品类将被实例化这一细节。工厂方法模式的核心是一个抽象工厂类,各种具体工厂类通过抽象工厂类将工厂方法继承下来。如此使得客户...
  • 简单工厂/工厂方法/抽象工厂

    万次阅读 2020-10-25 22:56:14
    * 缺点:新增实现类时,需要修改代码,不好动态扩展(可参考工厂方法) */ public class SimpleFactoryDP { public final class Const { static final int PRODUCT_A = 0; static final int PRODUCT_B = 1; }...
  • 简单工厂方法工厂方法以及抽象工厂方法的区别
  • 简单工厂VS工厂方法VS抽象工厂

    千次阅读 热门讨论 2014-11-17 20:37:10
    cho
  • 工厂方法模式

    万次阅读 热门讨论 2013-01-13 00:34:31
     工厂方法模式,英文Factory method pattern,工厂方法模式是简单工厂模式的进化版, 看本文之间最好先看一下简单工厂模式。工厂方法模式是定义一个创建产品对象的工厂接口,工厂接口本身不去创建对象,而是交给其...
  •  简单工厂模式又称静态工厂方法模式。从命名上就可以看出这个模式一定很简单。它存 在的目的很简单:定义一个用于创建对象的接口。 先来看看它的组成: 1) 工厂类角色:这是本模式的核心,含有一定的商业逻辑和...
  • 简单工厂模式VS工厂方法模式

    千次阅读 多人点赞 2014-04-04 16:00:32
    前面学习了简单工厂模式,理解的不是很深刻,今天刚好看到了工厂方法模式,比较一下也加深对前面的理解。  首先无论是简单工厂模式还是工厂方法模式都是把不变的地方提取出来,把容易发生变化的封装起来。以达到做...
  • 工厂方法和抽象工厂方法

    千次阅读 2010-08-16 19:10:00
    下面这篇帖子总结的很好 简单工厂,工厂方法和抽象工厂的区别总结...简单工厂没有抽象类,只有一个具体工厂类如MyFactory,然后MyFactory里面有个工厂方法CreateProduct返回一个基类产品,具体返回什么具体实例通过传
  • 大话设计模式(六)工厂方法模式

    万次阅读 2016-10-09 11:23:17
    大话设计模式(六)工厂方法模式前言  今天主要讲解工厂方法模式。工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。工厂方法模式是简单工厂模式的进一步抽象和...
  • 静态工厂方法和实例工厂方法

    千次阅读 2017-02-05 11:56:26
    在学习Spring bean的实例化方式的时候遇到的一个问题,Spring bean实例化有3种方法 1、构造器生成 2、静态工厂方法 3、实例工厂方法 那么问题来了,什么是静态工厂方法,什么是实例工厂方法? 静态工厂方法: ...
  • 简单工厂,工厂方法,抽象工厂之比较

    千次阅读 2011-07-22 19:56:22
    创建模式的目的就是为了解决使用和生产责任分离,当然能使用这种模式的前提就是用户并不关心"产品"的创建逻辑和过程,用户只需要对创建的结果进行使用.在这种情况下,将使用和创建分离就增加了程序的灵活性,因为"产品...
  • C++ 工厂方法模式

    万次阅读 2017-04-24 19:29:39
    工厂方法模式(Factory Method Pattern)是一种常用的对象创建型设计模式,此模式的核心思想是封装类中不变的部分,提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦、复用以及方便后期维护拓展的目的。...
  • 简单工厂 工厂方法 抽象工厂

    千次阅读 2012-01-04 23:19:26
    【找到一篇好文章】 ...   今天开始这个系列之前,心里有些恐慌,毕竟园子里的高手关于设计模式的经典文章很多很多,特别是大侠李会军、吕震宇 老师的文章更是堪称经典。他们的文笔如行云流水,例子活泼生动,讲解...
  • 工厂方法模式与抽象工厂模式

    千次阅读 2017-04-18 15:26:29
    工厂方法模式与抽象工厂模式
  • 工厂模式专门负责将大量有共同接口的类实例化。工厂模式可以动态决定将哪一个类实例化,而不必事先知道每次要实例化哪一个类

空空如也

1 2 3 4 5 ... 20
收藏数 50,173
精华内容 20,069
关键字:

工厂方法