精华内容
下载资源
问答
  • 渐开线圆柱直齿齿轮参数化设计的主要问题是大部分的画图软件没有渐开线命令。用三次样条曲线近似替代渐开线,并对不同插值方案生成的样条曲线进行误差分析,从而得到一简单方便的三次样条插值方法。用该方法参数化...
  • 得到螺旋钻杆主要参数及设计公式,并结合参数化设计方法,利用DriveWorks Solo软件编写设计程序,建立用户界面以实现螺旋钻杆自动装配、干涉检查以及间隙验证,最终得到不同参数系列螺旋钻杆维模型。对螺旋钻杆...
  • 如果说在此之前造型技术都属于无约束自由造型话,进入80年代中期,CV公司内部以高级副总裁为首一批人提出了一比无约束自由造型更新颖、更好算法——参数化实体造型方法。从算法上来说,这是一很好设想...

      正当CV公司业绩蒸蒸日上以及实体造型技术逐渐普及之时,CAD技术的研究又重大发展。如果说在此之前的造型技术都属于无约束自由造型的话,进入80年代中期,CV公司内部以高级副总裁为首的一批人提出了一种比无约束自由造型更新颖、更好的算法——参数化实体造型方法。从算法上来说,这是一种很好的设想。它主要有以下特点:基于特征、全尺寸约束、全数据相关、尺寸驱动设计修改。

    1fa84b5636888c8bb856a9b9e5de88f8.png

      当时的参数化技术方案还处于一种发展的初级阶段,还有很多技术难点有待攻克,CV公司内部也就是否投资参数化技术展开激烈争论。由于参数化技术核心算法与以往系统有本质差别,若采用参数化技术,势必要将全部软件重写,投资及工作量将非常惊人。另一点就是,当时技术主要用于航空和汽车工业,参数化技术还不能为这些工业中所需的大量自由曲面提供有效的工具(如实体曲面问题等),更何况当时CV软件在市场、上呈供不应求之势。因此,CV公司内部否决了参数化方案。

      策划参数化技术的这些人在新是想无法实现的情况下集体离开了CV公司,另成立了一家参数化技术公司(Parametric Technology Corp.PTC),开始研制名为Pro/ENGINEER的参数化软件。早期的Pro/ENGINEER软件性能很低,只能完成简单的工作,但由于第一次实现了尺寸驱动零件设计修改,使人们看到了它给设计者带来的方便性。

    19f424bee4369f1d35b5fa10e7916a2b.png

      80年代末,计算机技术迅猛发展,硬件成本大幅度下降,CAD技术硬件凭台成本从二十几万元降到几万美元,很多中小企业也开始有能力使用CAD技术。由于它们的设计工作量并不大,零件形状也不复杂,更重要的是他们无钱投资大型高档软件,因此他们把目光投向了中低档的Pro/ENGINEER软件。PTC也正是因为瞄准了这一中档市场,才迎合了众多中小企业在CAD上的需求,一举取得成功。进入90年代,参数化技术变得比较成熟起来,充分体现出其在许多通用件、零部件设计上存在的、简便易行的优势。踌躇满志的PTC也因此先行挤占了低端AutoCAD市场,以致于在几乎所有的CAD公司的营业额都在呈上升趋势的情况下,Autodesk公司的营业额却增长缓慢,市场排名连续下挫。继而,PTC公司又试图进入高端CAD市场,与CATIA、SDRC、CV、UG等群雄在汽车及飞机制造业市场逐鹿。目前,PTC在CAD市场份额排名已名列前茅。可以说,参数化技术的应用主导了CAD发展史上的第三次技术革命。

    展开全文
  • 在简单工厂,工厂方法,抽象工厂这设计模式当中,代码其实都很简单,主要是要理解运用。 简单工厂: 简单工厂说白了,就是利用Switch根据传递的参数,进行实例。 工厂方法: 工厂方法,为解决每次都去...

    在开发当中我们经常会使用三个设计模式,来帮我们解决项目代码的可扩展性。

    在简单工厂,工厂方法,抽象工厂这三个设计模式当中,代码其实都很简单,主要是要理解运用。

    简单工厂:

    简单工厂说白了,就是利用Switch根据传递的参数,进行实例化。

     

    工厂方法:

    工厂方法,为解决每次都去增加Swicth的简单工厂的升级。为每一个产品提供一个工厂类。

     

    抽象工厂:

    抽象工厂,我觉得也是对工厂方法的再次升级,工厂方法每次只能创作一个产品,而抽象工厂就是产品线的产品族。

    总结下,从网上找到一个大牛的回复:

    我认为不能说简单工厂模式”对于增加新的产品,无能为力“,因为如果简单工厂是用来生产”东西“的,那任何”东西“的子类,比如汽车,自行车,轮船,洗发水都是可以被生产的,但此处简单工厂的压力太大了啊,任何”东西“的子类都可以被生产,负担太重,所以一般对简单工厂类也有种称呼,叫”上帝类“。
    而工厂方法模式就很好的减轻了工厂类的负担,把某一类/某一种东西交由一个工厂生产,同时增加某一类”东西“并不需要修改工厂类,只需要添加生产这类”东西“的工厂即可,使得工厂类符合开放-封闭原则。
    对于”东西“的分类,有时候不能光是横向的分类,从另一个角度也是可以分类的,不知道这句话的意思能不能懂,打个比方:汽车可以根据品牌分为奔驰、奥迪,也可以根据类别分为普通三厢车和SUV车,如果用工厂方法来描述的话,奔驰车工厂有一个方法即生产奔驰车,奥迪车工厂有一个方法生产奥迪车,但在有多重分类的情形下,这样写已经不够用,不符合实际了,这个时候需要用到抽象工厂模式,即奥迪车工厂有两个方法,一个方法是生产普通三厢奥迪车,另一个方法是生产SUV奥迪车。奔驰车工厂有两个方法,一个方法是生产普通三厢奔驰车,另一个方法是生产SUV奔驰车。
    上面即工厂方法模式和抽象工厂模式的应用场景,因为这两者很像,所以概念上不容易区分,可以这么说,工厂方法模式是一种极端情况的抽象工厂模式,而抽象工厂模式可以看成是工厂方法模式的一种推广。
    再说下抽象工厂模式,此处的抽象工厂接口应该是有两个方法,一个是生成普通三厢车,一个是生产SUV车,可以说,生产的”东西“已经被限定住了,因此你不能生产某品牌汽车外的其他”东西“,因而可以理解成使用抽象工厂模式不能新增新的”东西“(在简单工厂和工厂方法中理论上都是可以新增任意”东西“的)

    感觉说的很对

    转载于:https://www.cnblogs.com/flyfish2012/p/3819868.html

    展开全文
  • JAVA工厂设计模式三种形式

    千次阅读 2016-10-16 16:59:38
    工厂模式:主要用来实例有共同接口类,工厂模式可以...主要有一个静态方法,用来接受参数,并根据参数来决定返回实现同一接口不同类实例。我们来看一个具体例子: 假设一家工厂,几生产洗衣机,有生产冰箱
    工厂模式:主要用来实例化有共同接口的类,工厂模式可以动态决定应该实例化那一个类。
    工厂模式的形态
    工厂模式主要用一下几种形态:
    1:简单工厂(。
    2:工厂方法
    3:抽象工厂

    简单工厂
    又叫静态工厂,是工厂模式三中状态中结构最为简单的。主要有一个静态方法,用来接受参数,并根据参数来决定返回实现同一接口的不同类的实例。我们来看一个具体的例子:
    假设一家工厂,几生产洗衣机,有生产冰箱,还有空调等等..
    我们先为所有产品定义一个共同的产品接口
    1. public interface Product{} 

    接着我们让这个工厂的所有产品都必须实现此接口
    1. public class Washer implements Product{ 
    2.    public Washer(){ 
    3.        System.out.println("洗衣机被制造了"); 
    4.    } 
    5.  
    6. public class Icebox implements Product{ 
    7.    public Icebox(){ 
    8.        System.out.println("冰箱被制造了"); 
    9.    } 
    10.  
    11. public class AirCondition implements Product{ 
    12.    public Icebox(){ 
    13.        System.out.println("空调被制造了"); 
    14.    } 

    接下来我们来写一个工厂类,有它来负责生产以上的产品
    1. public class SimpleFactory { 
    2.      
    3.     public static Product factory(String productName) throws Exception{ 
    4.         if(productName.equals("Washer")){ 
    5.             return new Washer(); 
    6.         }else if(productName.equals("Icebox")){ 
    7.             return new Icebox(); 
    8.         }else if(productName.equals("AirCondition")){ 
    9.             return new AirCondition(); 
    10.         }else
    11.             throw new Exception("没有该产品"); 
    12.         } 
    13.     } 

    好了,有了这个工厂类,我们就可以开始下定单了,SimpleFactory将根据不同的定单类决定生产什么产品。
    1. public static void main(String[] args) { 
    2.     try { 
    3.               SimpleFactory.factory("Washer"); 
    4.               SimpleFactory.factory("Icebox"); 
    5.               SimpleFactory.factory("AirCondition"); 
    6.             } catch (Exception e) { 
    7.         e.printStackTrace(); 
    8.     } 

    由上面的代码可以看出,简单工厂的核心就是一个SimpleFactory类,他拥有必要的逻辑判断能力和所有产品的创建权利,我们只需要向把定单给他,就能得到我们想要的产品。这使用起来似乎非常方便。
    但,实际上,这个SimpleFactory有很多的局限。首先,我们每次想要增加一种新产品的时候,都必须修改SimpleFactory的原代码。其次,当我们拥有很多很多产品的时候,而且产品之间又存在复杂的层次关系的时候,这个类必须拥有复杂的逻辑判断能力,其代码量也将不断地激增,这对以后的维护简直就是恐怖两个字...
    还有就是,整个系统都严重依赖SimpleFactory类,只要SimpleFactory类一出问题,系统就进入不能工作的状态,这也是最为致命的一点....
    以上的不足将在工厂模式的另外两种状态中得到解决。

    工厂方法
    上面的代码告诉我们,简单工厂并不简单,它是整个模式的核心,一旦他出了问题,整个模式都将受影响而不能工作,为了降低风险和为日后的维护、扩展做准备,我们需要对它进行重构,引入工厂方法
    工厂方法为工厂类定义了接口,用多态来削弱了工厂类的职能,以下是工厂接口的定义:
    1. public interface Factory{ 
    2.   public Product create(); 

    我们再来定义一个产品接口
    1. public interface Product{} 

    一下是实现了产品接口的产品类
    1. public class Washer implements Product{ 
    2.    public Washer(){ 
    3.        System.out.println("洗衣机被制造了"); 
    4.    } 
    5.  
    6. public class Icebox implements Product{ 
    7.    public Icebox(){ 
    8.        System.out.println("冰箱被制造了"); 
    9.    } 
    10.  
    11. public class AirCondition implements Product{ 
    12.    public Icebox(){ 
    13.        System.out.println("空调被制造了"); 
    14.    } 

    接下来,就是工厂方法的核心部分,也就是具体创建产品对象的具体工厂类,
    1. //创建洗衣机的工厂 
    2. public class CreateWasher implements Factory{ 
    3.     public Product create(){ 
    4.           return new Washer(); 
    5.     } 
    6.  
    7. //创建冰箱的工厂 
    8. public class CreateIcebox implements Factory{ 
    9.     public Product create(){ 
    10.           return new Icebox(); 
    11.     } 
    12.  
    13. //创建空调的工厂 
    14. public class CreateAirCondition implements Factory{ 
    15.     public Product create(){ 
    16.           return new AirCondition(); 
    17.     } 

    从上面创建产品对象的代码可以看出,工厂方法简单工厂的主要区别是,简单工厂是把创建产品的职能都放在一个类里面,而工厂方法则把不同的产品放在实现了工厂接口的不同工厂类里面,这样就算其中一个工厂类出了问题,其他工厂类也能正常工作,互相不受影响,以后增加新产品,也只需要新增一个实现工厂接口工厂类,就能达到,不用修改已有的代码。但工厂方法也有他局限的地方,那就是当面对的产品有复杂的等级结构的时候,例如,工厂除了生产家电外产品,还生产手机产品,这样一来家电是手机就是两大产品家族了,这两大家族下面包含了数量众多的产品,每个产品又有多个型号,这样就形成了一个复杂的产品树了。如果用工厂方法来设计这个产品家族系统,就必须为每个型号的产品创建一个对应的工厂类,当有数百种甚至上千种产品的时候,也必须要有对应的上百成千个工厂类,这就出现了传说的类爆炸,对于以后的维护来说,简直就是一场灾难.....

    抽象工厂
    抽象工厂:意的意图在于创建一系列互相关联或互相依赖的对象。<<Java设计模式>>
    我自己觉得抽象工厂是在工厂方法的基础上引进了分类管理的概念....
    工厂方法用来创建一个产品,它没有分类的概念,而抽象工厂则用于创建一系列产品,所以产品分类成了抽象工厂的重点,
    我们继续用上面的例子来说明:
    工厂生产的所有产品都用都用大写字母来标明它们的型号,比如冰箱,就有“冰箱-A",“冰箱-B",同样,其他的产品也都是遵守这个编号规则,于是就有了一下产品家族树

    冰箱:

    1.   
    2. 冰箱-A  
    3. 冰箱-B


    洗衣机:

    1.   
    2. 洗衣机-A  
    3. 洗衣机-B

    我们可以为冰箱和洗衣机分别定义两个产品接口,以对他们进行分类,
    1. //洗衣机接口 
    2. public interface Washer{ 
    3.  
    4. //冰箱接口 
    5. public interface Icebox{ 

    接着,我们分别创建这两个接口的具体产品
    1. //洗衣机-A 
    2. public class WasherA implements Washer{ 
    3.    public WasherA(){ 
    4.        System.out.println("洗衣机-A被制造了"); 
    5.    } 
    6.  
    7. //洗衣机-B 
    8. public class WasherB implements Washer{ 
    9.    public WasherB(){ 
    10.        System.out.println("洗衣机-B被制造了"); 
    11.    } 
    12.  
    13. //冰箱-A 
    14. public class IceboxA implements Icebox{ 
    15.    public IceboxA(){ 
    16.        System.out.println("冰箱-A被制造了"); 
    17.    } 
    18.  
    19. //冰箱-B 
    20. public class IceboxB implements Icebox{ 
    21.    public IceboxB(){ 
    22.        System.out.println("冰箱-B被制造了"); 
    23.    } 

    到此,产品部分我们准备好了,接下来我们来处理工厂部分,我们先来定义工厂行为接口
    1. public interface Factory{ 
    2.        public Washer createWasher(); 
    3.        public Icebox createIcebox(); 

    接下来我创造具体的工厂类,我们根据上面产品的接口,把型号A的产品分为一类,由一个工厂来管理,把型号为B的产品有另一个工厂管理,根据这个分类,我们可以实现如下的两个具体工厂类
    1. //创建型号为A的产品工厂 
    2. public class FactoryA implements Factory{ 
    3.        //创建洗衣机-A 
    4.        public Washer createWasher(){ 
    5.             return new WasherA(); 
    6.        } 
    7.  
    8.        //创建冰箱-A 
    9.        public Icebox createIcebox(){ 
    10.             return new IceboxA(); 
    11.        } 
    12.  
    13. //创建型号为B的产品工厂 
    14. public class FactoryB implements Factory{ 
    15.        //创建洗衣机-B 
    16.        public Washer createWasher(){ 
    17.             return new WasherB(); 
    18.        } 
    19.  
    20.        //创建冰箱-B 
    21.        public Icebox createIcebox(){ 
    22.             return new IceboxB(); 
    23.        } 


    这样,我们的抽象工厂就完成了。有上面可以看出,在运用上我觉得工厂方法和抽象工厂,都有自己的应用场景,并没有什么优劣之分,但在应用抽象工厂之前,要先对创建的对象进行系统的分类,这点很重要,好的产品分类规则能为具体工厂类的选择调用和以后的扩展提供清晰的思路.

     

    展开全文
  • 本文是本人对这三种模式学习后一个小结以及对他们之间区别理解。 简单工厂简单工厂模式工厂类一般是使用静态方法,通过接收的参数的不同来返回不同对象实例。不修改代码话,是无法扩展。 工厂方法...

    简单工厂,工厂方法,抽象工厂都属于设计模式中的创建型模式。其主要功能都是帮助我们把对象的实例化部分抽取了出来,优化了系统的架构,并且增强了系统的扩展性。

    本文是本人对这三种模式学习后的一个小结以及对他们之间的区别的理解。

     

    简单工厂

    简单工厂模式的工厂类一般是使用静态方法,通过接收的参数的不同来返回不同的对象实例。

    不修改代码的话,是无法扩展的。

    简单工厂

     

     

    工厂方法

    工厂方法是针对每一种产品提供一个工厂类。通过不同的工厂实例来创建不同的产品实例。

    在同一等级结构中,支持增加任意产品。

    工厂方法

     

     

    抽象工厂

    抽象工厂是应对产品族概念的。比如说,每个汽车公司可能要同时生产轿车,货车,客车,那么每一个工厂都要有创建轿车,货车和客车的方法。

    应对产品族概念而生,增加新的产品线很容易,但是无法增加新的产品。

    抽象工厂

     

     

     

    小结

    ★工厂模式中,重要的是工厂类,而不是产品类。产品类可以是多种形式,多层继承或者是单个类都是可以的。但要明确的,工厂模式的接口只会返回一种类型的实例,这是在设计产品类的时候需要注意的,最好是有父类或者共同实现的接口。

    ★使用工厂模式,返回的实例一定是工厂创建的,而不是从其他对象中获取的。

    ★工厂模式返回的实例可以不是新创建的,返回由工厂创建好的实例也是可以的。

     

    区别

    简单工厂 : 用来生产同一等级结构中的任意产品。(对于增加新的产品,无能为力)

    工厂方法 :用来生产同一等级结构中的固定产品。(支持增加任意产品)   
    抽象工厂 :用来生产不同产品族的全部产品。(对于增加新的产品,无能为力;支持增加产品族)  

     

    以上三种工厂 方法在等级结构和产品族这两个方向上的支持程度不同。所以要根据情况考虑应该使用哪种方法。 

    展开全文
  • 本文贡献主要体现在个方面。 首先,我们提出了一基于全局图像信息自适应均值漂移聚类方法,以指导水平集演化。 通过简单阈值处理,均值漂移聚类结果可以自动,快速地生成水平集演化初始轮廓。 其次...
  • 二十三种设计模式【PDF版】

    热门讨论 2011-05-30 14:13:49
    的被使用,被调用,而是深刻的介入到一个领域中去,J2EE 等框架软件设计的目的是将一个领域中不变的东西先定义好,比如 整体结构和一些主要职责(如数据库操作 事务跟踪 安全等),剩余的就是变化的东西,针对这个领域...
  • 本文简单描述三种工厂模式,但是简单工厂模式并不属于23种设计模式之一,其作为一个铺垫可以更好理解工厂方法和抽象工厂两种设计模式。 简单工厂 我们先来看最原始工厂模式,也就是简单工厂。其通过传入字符...
  • 参数化人体模型.pdf摘 要由维信息重构维物体是计算机辅助设计研究热点问题。它在地形重构、服装设计、医学CT图像维重建等领域有着广阔应用前景。本课题研究以国家自然科学基金项目 《维服装动力模型...
  • 部分将要指出如何应用单向增益设计方法通过调整晶体管输入和输出来获得更大增益。 S参数是一个重要参数,该参数可以用来搜集晶体管数据,然后用这些数据预测性能,设计一个放大器电路。第一部分指出,与Z...
  • 引言 ...此篇博客是笔者对学完这三种模式之后一个小小总结 简单工厂  简单工厂模式工厂类一般是使用静态方法,通过接收的参数不同来返回不同对象实例。不修改代码话,是无法扩展  优点
  • 为探索能够准确反映合成孔径系统成像性能特征指标,计算比较了三种典型六孔径阵列填充因子上下限、截止频率、截止能量比以及相关系数等参数,发现其成像质量主要与调制传递函数(MTF)中低频段频谱分布有关。...
  • 在上面一段代码中一共用了三种模式,除了工厂模式外,还有Singleton单态模式,以及proxy模式,proxy模式主要用来授权用户对forum访问,因为访问forum有两种人:一个是注册用户 一个是游客guest,那么那么相应权限就不...
  • 该形式主要是提供演示功能,它主要利用获取当前所选学者发文关键词,来间接表达个性特征,并按照前文所述方法得到与此类关键词集合对应外文推荐列表。为了方便用户使用,我们设计了两个调节参数,其中“文档...
  • Ournn:一为numpy定制,训练、可视一体深度学习框架 关于Ournn: Ournn 是为numpy量身定制类深度学习框架,致力实现numpy格式数据进行深度学习,其主要的目标如下: (1)可训练-能够进行最基本深度...
  • 本文是本人对这三种模式学习后一个小结以及对他们之间区别理解。 简单工厂 简单工厂模式工厂类一般是使用静态方法,通过接收的参数的不同来返回不同对象实例。 不修改代码话,是无法扩展。 工厂...
  • 本文是本人对这三种模式学习后一个小结以及对他们之间区别理解。 简单工厂 简单工厂模式工厂类一般是使用静态方法,通过接收的参数的不同来返回不同对象实例。 不修改代码话,是无法扩展。 ...
  •  第12章 本章主要对目前常用3DS、AES、OBJ、MD2、MD3、MS3D等3D模型进行了介绍和说明,并给出了每种3D模型示例,在此基础上,详细介绍了在OpenGL中应用3DS模型种主要方法:通过第方软件对3DS模型进行...
  •  第12章 本章主要对目前常用3DS、AES、OBJ、MD2、MD3、MS3D等3D模型进行了介绍和说明,并给出了每种3D模型示例,在此基础上,详细介绍了在OpenGL中应用3DS模型种主要方法:通过第方软件对3DS模型进行...
  •  第12章 本章主要对目前常用3DS、AES、OBJ、MD2、MD3、MS3D等3D模型进行了介绍和说明,并给出了每种3D模型示例,在此基础上,详细介绍了在OpenGL中应用3DS模型种主要方法:通过第方软件对3DS模型进行...
  • 本文是本人对这三种模式学习后一个小结以及对他们之间区别理解。 简单工厂 简单工厂模式工厂类一般是使用静态方法,通过接收的参数的不同来返回不同对象实例。 不修改代码话,是无法扩展。 ...
  •  第12章 本章主要对目前常用3DS、AES、OBJ、MD2、MD3、MS3D等3D模型进行了介绍和说明,并给出了每种3D模型示例,在此基础上,详细介绍了在OpenGL中应用3DS模型种主要方法:通过第方软件对3DS模型进行...
  •  第12章 本章主要对目前常用3DS、AES、OBJ、MD2、MD3、MS3D等3D模型进行了介绍和说明,并给出了每种3D模型示例,在此基础上,详细介绍了在OpenGL中应用3DS模型种主要方法:通过第方软件对3DS模型进行...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 640
精华内容 256
关键字:

参数化设计的三种主要方法