精华内容
下载资源
问答
  • 最简单的工厂模式

    2019-07-17 16:21:48
    你想如果有多个类似... 这个时候你就可以采用工厂方法来封装这个问题。 public interface IProduct { } public class ConcreteProductA : IProduct { } public class ConcreteProductB : IProduct { } ...
    你想如果有多个类似的类,我们就需要实例化出来多个类。这样代码管理起来就太复杂了。 
    这个时候你就可以采用工厂方法来封装这个问题。

     public interface IProduct { }
        public class ConcreteProductA : IProduct { }
        public class ConcreteProductB : IProduct { }
    
        public class Factory
        {
            public IProduct Create()
            {
                // 工厂决定到底实例化哪个子类。
                return new ConcreteProductA();
            }
        }

    那么再延伸下,如果我要生产B怎么办

    一般我们会想到,加入参数,好,说到参数,你想怎么加,呵呵,设计模式的作者给我一个例子,我觉得非常好,如果我们一般人,我想多数这么做

      public IProduct Create(IProduct product)
            {
                //判断B是否实现了接口
                //B b = new B();
                //if (b.GetType().GetInterface("ISay") != null)
                //{
                //    //如果实现了接口“ISay”,...
                //}
                // 工厂决定到底实例化哪个子类。
             
            }

    但是我觉得作者这里给出了另外一种思维模式,让我们看看

     public enum Category
        {
            A,
            B
        }
    
        public static class ProductFactory
        {
            public static IProduct Create(Category category)
            {
                switch (category)
                {
                    case Category.A:
                        return new ConcreteProductA();
                    case Category.B:
                        return new ConcreteProductB();
                    default:
                        throw new NotSupportedException();
                }
            }
        }

    并不是说这样非常好,但是这种思想还是值得在某些地方借鉴

    转载于:https://www.cnblogs.com/wangchuang/archive/2013/03/28/2986267.html

    展开全文
  • 工厂模式是初学者比较费解模式之一,首先讲讲什么情景下需要工厂模式 1. 当你系统工程量达到一定级别,需要new很多相似类时候,你需要考虑此事是否需要借助工厂模式。 2. 类改名字或者更改其构造函数参数是...

    工厂模式是初学者比较费解的模式之一,首先讲讲什么情景下需要工厂模式

    1. 当你的系统工程量达到一定级别,需要new很多相似类的时候,你需要考虑此事是否需要借助工厂模式。

    2. 类改名字或者更改其构造函数参数是很常见的,当系统特别庞大时,这项工程会让人欲哭无泪。


    工厂模式一般有两种实现方式: 简单工厂 和 工厂方法


    简单工厂是由3个要素构成: 1 抽象产品角色 2. 具体产品角色 3. 工厂角色

     /**
     * 抽象产品角色
     * @author c_qinshouzhi
     *
     */
    public interface Car {
    public void driveCar();
    }



    /**
     * 具体产品角色
     * @author c_qinshouzhi
     *
     */
    public class Benz implements Car{


    @Override
    public void driveCar() {
    System.out.println("Drive Benz");
    }


    }




    /**
     * 工厂类角色
     * @author c_qinshouzhi
     *
     */
    public class CarFactory {


    public CarFactory() {
    }

    public static Car konwCar(String carName){
    if(carName.equals("be")){
    return new Benz();
    }
    if(carName.equals("bm")){
    return new Bmw();
    }
    return null;
    }
    }



    是不是简单易懂? 直接调用就行

    Car car = CarFactory.konwCar("bm");
    car.driveCar();



    因为简单工厂并不满足开闭原则,所以就出现了工厂模式,是由4个要素构成


    1. 抽象工厂角色 2.具体工厂角色 3. 抽象产品角色 4. 具体产品角色


    换句话说就是将简单工厂中的工厂角色再次分为抽象工厂角色和具体工厂角色


    /**
     * 抽象工厂类
     * @author c_qinshouzhi
     *
     */
    public interface CarDriverFactory {
    public  Car getCar();
    }


    /**
     * 具体工厂
     * @author c_qinshouzhi
     *
     */
    public class BmwDriverFactory implements CarDriverFactory{


    public Car getCar() {
    return new Bmw();
    }


    }


    直接调用  CarDriverFactory cf2 = new BmwDriverFactory();
                    cf2.getCar().driveCar();


    不懂加我微信 18221051908

    展开全文
  • using System; class A { public static void Main(String [] args) { string FruitName = Console.ReadLine(); IFruit MyFruit = null; FruitFactory MyFruitFactory = new FruitFactory

    using  System; 
    class  A   

     public  static  void  Main(String  []  args) 
     { 
      string FruitName = Console.ReadLine();

      IFruit MyFruit = null;

      FruitFactory MyFruitFactory = new FruitFactory();

      switch (FruitName)

      {

      case "Orange":

       MyFruit = MyFruitFactory.MakeOrange();

       break;

      case "Apple":

       MyFruit = MyFruitFactory.MakeApple();

       break;

      default:

       break;

      }
     
     } 
    }


    public class FruitFactory

    {

      public Orange MakeOrange()

      {

       return new Orange();

      }

      public Apple MakeApple()

      {

       return new Apple();

      }

    }

     
     
    public interface IFruit

    {

    }

    public class Orange:IFruit

    {

      public Orange()

      {

       Console.WriteLine("An orange is got!");

      }

    }

    public class Apple:IFruit

    {

      public Apple()

      {

       Console.WriteLine("An apple is got!");

      }


     

    展开全文
  • 最简单的.net工厂模式

    2011-04-25 12:56:51
    创建最简单的工厂模式实例,灵活性 是做.net产品的最常用模式
  • 简单工厂

    热门讨论 2020-08-25 21:40:22
    首先简单工厂并不是一种设计模式,而是一个最简单的工厂模式 它可以根据不同的参数,创建并返回不同的类,其中这些类具有一个公共的父类或者同一个接口。 简单工厂模式包含的类: - Factory:工厂类,内部是一个方法...

    序:学习设计模式也有好长时间了 是时候总结一波了

    就先拿我们最先接触的简单工厂来做一些总结吧

    什么是简单工厂

    首先简单工厂并不是一种设计模式,而是一个最简单的工厂模式 它可以根据不同的参数,创建并返回不同的类,其中这些类具有一个公共的父类或者同一个接口。
    简单工厂模式包含的类:

    - Factory:工厂类,内部是一个方法,目的是根据参数选择创建对象

    - Product:抽象类产品类,其作为具体产品的父类,负责定义公共的接口

    -ConcreteProduct:具体的类继承与抽象的产品类,工厂就是创建该类的对象

    在这里插入图片描述

    简单工厂的优缺点

    优点:客户端不需要关注对象是谁创建的,只要通过工厂中静态方法就可以直接获取其需要的对象
    缺点:工厂类中需要选择创建具体某个对象,所以一旦添加新的产品则必须要对工厂中的选择逻辑进行修改,违背了开闭原则!
    适应场合:产品类相对较少的情况,使用简单工厂创建产品对象,这样即实现了生产者与消费者的分离,也不会在工厂类中出现太复杂的判断逻辑!

    展开全文
  • 简单工厂模式 用来生产同一等级结构中任意产品 工厂方法模式 用来生产同一等级结构中固定产品 抽象工厂模式 胃药一个超级工厂创建其他工厂 需要满足OOP原则: 开闭原则:一个软件...
  • 简单的工厂模式

    2013-12-30 10:53:18
    简单的工厂模式代码,这个工厂模式中最简单的模式,用于对工厂模式的最基本的认识
  • 价值:有一系列工厂方法可以加工不同商品。 具体解释:在某个类(AbstractFactory)有一系列工厂方法(CreateProductA/CreateProductB)。 该系列函数有如下2个要点: 1.该函数可多态(即:包含该函数类是多态...
  • 1,简单工厂模式:一个工厂生产一类产品,通过传入参数,区分不同型号。这种模式缺点是当添加新型号产品时候,需要改动工厂代码。 2,工厂方法模式:一个工厂生产一种型号产品,通过建立多个工厂,完成同一类...
  • 自己写的,最简单的例子,利用反射实现抽象工厂模式,给初学者一些提示。
  • 工厂模式(Factory Pattern)是 Java 中常用设计模式之一。这种类型设计模式属于创建型模式,它提供了一种创建对象最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个...
  • 最简单易懂设计模式之工厂模式工厂模式前言简单工厂模式工厂方法模式抽象工厂模式 工厂模式 前言 在编程中,构建对象最常用方式是 new 一个对象。其实构建过程可以被封装起来,工厂模式便是用于封装对象设计...
  • 场景:要实现不同类型弹窗,警示框、提示框、确认框。这些弹框存在一些相似地方,也存在一些不同地方。可以将不同属性作为参数传递进来。 function creatPop(type,text){ // 创建一个对象,并对对象...
  • 定义:抽象工厂模式提供了一个创建一系列相关或者相互依赖对象接口,无需指定他们具体类。 适用场景: 客户端不依赖于产品类实例如何被创建,实现等细节 强调一系列产品产品对象一起使用创建对象需要大量...
  • 简单工厂的最简单应用 using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication1{ class Program { static void Main(string[] args) 
  • 本文,我们就从最简单的工厂方法模式开始,带大家揭开设计模式的神秘面纱。 简单工厂 要学习工厂方法,我们得先来学习下简单工厂模式。工厂方法模式则是在简单工厂的基础上做的进一步优化。 模式定义 简单工厂模式也...
  • 简单工厂模式总结

    2020-11-18 08:44:02
    简单工厂模式提供了专门的工厂类用于创建对象,将对象的创建和对象的使用分离开,它作为一种最简单的工厂模式在软件开发中得到了较为广泛的应用。 1. 主要优点 简单工厂模式的主要优点如下: (1) 工厂类包含...
  • 抽象工厂模式中一般是抽象出工厂接口,表示他就是一个工厂,而不管它是制造什么产品的工厂,他的抽象程度较高。 而工厂模式的抽象工厂一般是针对于产品进行抽象,表示它是一个生产某类产品的工厂简单工厂是不支持...
  • 我们来做个最简单的代理工厂,用于把对象给代理了。代码很简洁,就是一个类,用于返回封装的对象。使用起来尤其的简单。具体的说明我就不用写了,大家看下最下面的输出日志就会明白了。 代理工厂的代码如下。 ...
  • 我们来做个最简单的代理工厂,用于把对象给代理了。代码很简洁,就是一个类,用于返回封装的对象。 使用起来尤其的简单。具体的说明我就不用写了,大家看下最下面的输出日志就会明白了。   代理工厂的代码如下。...
  • 实现简单的工厂模式

    2019-03-13 23:39:21
    简单工厂模式 概念: 简单工厂模式是属于创建型模式,又叫做...简单工厂模式是工厂模式家族中最简单实用模式,可以理解为是不同工厂模式一个特殊实现。 package com.senchen365.design.factory; /** * 类名...
  • 让我们看一个简单的用法 我有一个接口,它的实现如下,带有方法栏: // interface file class foo_i { public: // no need virtual destructor virtual int bar() = 0; } // class file class foo : public foo_i...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,150
精华内容 1,660
关键字:

最简单的工厂