首页 > 学院 > 开发设计 > 正文

创造设计模式

2019-11-09 14:47:34
字体:
来源:转载
供稿:网友
此设计模式提供了根据项目要求创建类的对象的方法。这意味着您可以控制应用程序中对象的创建和生命周期。正如我们在上一篇文章中已经讨论过的不同的创造性设计模式,让我们回忆一下下面的创造性模式,然后我们将在后面讨论不同类型的创造性模式。单身设计模式SingletonSingleton设计模式确保一个类在应用程序中只有一个实例,并且它只提供访问该对象的运行实例的一个访问点(全局访问点)。工厂模式工厂模式确保您可以使用工厂方法(静态方法)而不是使用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;    }    ……}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表