创造设计模式

103 篇文章 0 订阅
21 篇文章 0 订阅
此设计模式提供了根据项目要求创建类的对象的方法。这意味着您可以控制应用程序中对象的创建和生命周期。正如我们在上一篇文章中已经讨论过的不同的创造性设计模式,让我们回忆一下下面的创造性模式,然后我们将在后面讨论不同类型的创造性模式。


单身设计模式Singleton
Singleton设计模式确保一个类在应用程序中只有一个实例,并且它只提供访问该对象的运行实例的一个访问点(全局访问点)。

工厂模式
工厂模式确保您可以使用工厂方法(静态方法)而不是使用new运算符来创建类的对象,以便可以控制该特定对象使用的所有对象和内存。
Sample sample=new Sample();

抽象工厂
抽象工厂模式是一组工厂类,我们可以根据我们的要求使用/实现新的工厂类。然后我们可以派生一个新的类形式新创建的工厂类,而不是直接从抽象工厂类派生。
public abstract class Factory{
    public abstract Sample creator();
    public abstract Sample2 creator(String name);
}
public class SimpleFactory extends Factory{
    public Sample creator(){
        .........
        return new SampleA
    }
    public Sample2 creator(String name){
        .........
        return new Sample2A
    }
}
 
public class BombFactory extends Factory{
    public Sample creator(){
        ......
        return new SampleB
    }
    public Sample2 creator(String name){
        ......
        return new Sample2B
    }
}


建造者模式
Builder模式确保,当我们创建一个复杂的对象时,它使用一步一步的创建过程,最后一步返回类的对象。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace Building
{
    // Builder pattern -- Structural example  


// "Director"
class Director
{
  // Methods
  public void Construct( Builder builder )
  {
    builder.BuildPartA();
    builder.BuildPartB();
  }
}

// "Builder"
abstract class Builder
{
  // Methods
  abstract public void BuildPartA();
  abstract public void BuildPartB();
  abstract public Product GetResult();
}

// "ConcreteBuilder1"
class ConcreteBuilder1 : Builder
{
  // Fields
  private Product product;

  // Methods
  override public void BuildPartA()
  {
    product = new Product();
    product.Add( "PartA" );
  }

  override public void BuildPartB()
  {
    product.Add( "PartB" );
  }

  override public Product GetResult()
  {
    return product;
  }
}

// "ConcreteBuilder2"
class ConcreteBuilder2 : Builder
{
  // Fields
  private Product product;

  // Methods
  override public void BuildPartA()
  {
    product = new Product();
    product.Add( "PartX" );
  }

  override public void BuildPartB()
  {
    product.Add( "PartY" );
  }

  override public Product GetResult()
  {
    return product;
  }
}

// "Product"
class Product
{
  // Fields
  ArrayList parts = new ArrayList();
 
  // Methods
  public void Add( string part )
  {
    parts.Add( part );
  }

  public void Show()
  {
    Console.WriteLine( " Product Parts -------" );
    foreach( string part in parts )
      Console.WriteLine( part );
  }
}

/** <summary>
/// Client test
/// </summary>
public class Client
{
  public static void Main( string[] args )
  {
    // Create director and builders
    Director director = new Director( );

    Builder b1 = new ConcreteBuilder1();
    Builder b2 = new ConcreteBuilder2();

    // Construct two products
    director.Construct( b1 );
    Product p1 = b1.GetResult();
    p1.Show();

    director.Construct( b2 );
    Product p2 = b2.GetResult();
    p2.Show();
    Console.Read();
  }
}
}



原型模式

原型模式确保对象的克隆属性。克隆的对象可能与原始对象不同。例如,您可以从朋友复制文档,并根据您的要求更改一些点。

public class PrototypeDemo implements Cloneable{
  public Object clone(){
    Object object = null;
    try {
      object = super.clone();
    } catch (CloneNotSupportedException exception) {
      System.err.println("Not support cloneable");
    }
    return object;
    }
    ……
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值