美文网首页
GoF - 创建型模式

GoF - 创建型模式

作者: _Walker__ | 来源:发表于2021-11-20 01:12 被阅读0次

    生成器模式(Builder)

    将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

    这里的“表示”就是指其创建出来的“产品对象”。

    • Builder用于创建复杂对象,这里复杂对象指它有多个组成部分(部件)。Builder为必要的部件提供创建接口,由使用者来调用。
    • 部件的创建接口有两个职责:创建部件、将部件组装进最终的产品
    • Builder为客户屏蔽了部件的细节,客户只用关心是否要创建某个部件,不需要关注创建出来的部件具体是什么

    同其他创建型模式的差别:

    • Builder将一步步创建部件的过程交给客户控制,使其可以进行更精细的控制
    • Builder在最后一步,将最终产返回

    原型模式(Prototype)

    用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象

    • Prototype的本质是通过clone操作,用一个对象生成另一个对象
    • 当一个类的实例,只会有少数几种不同状态的组合时,很适合用Prototype。但这种情况下,复用对象应该会比,创建一批完全相同的对象更合适。
    • 在类是“第一类对象”的语言(如: Python)中,类本身就像是一个Prototype
    • 在使用工厂类的模块中,适当将工厂与Prototype结合可以减少工厂的层次。一个具体工厂,就能创建多种产品(产品的层次不会改变)
    class Product { ... }
    class ProductA : Product { ... }
    class ProductB : Product { ... }
    
    // 工厂
    class Factory
    {
        private Product ;
        
        public Factory(Product p)
        {
            _p = p;
        }
    
        Product Create(int someArg)
        {
            Product rst = p.Clone();
            rst.Init(someArg);
            // do somthing else~
            return rst;
        }
    }
    
    // 创建示例
    Factory fa = new Factory(new ProductA());
    fa.Create(666);
    Factory fb = new Factory(new ProductB());
    fb.Create(888);
    

    创建型模式还有工厂跟单例,在之前文章列过了。
    GoF基础设计模式(Head First篇)
    GoF - 工厂模式(Factory Pattern)

    相关文章

      网友评论

          本文标题:GoF - 创建型模式

          本文链接:https://www.haomeiwen.com/subject/nwqytrtx.html