此设计模式提供了根据项目要求创建类的对象的方法。这意味着您可以控制应用程序中对象的创建和生命周期。正如我们在上一篇文章中已经讨论过的不同的创造性设计模式,让我们回忆一下下面的创造性模式,然后我们将在后面讨论不同类型的创造性模式。
单身设计模式Singleton
Singleton设计模式确保一个类在应用程序中只有一个实例,并且它只提供访问该对象的运行实例的一个访问点(全局访问点)。
工厂模式
工厂模式确保您可以使用工厂方法(静态方法)而不是使用new运算符来创建类的对象,以便可以控制该特定对象使用的所有对象和内存。
Sample sample=new Sample();
抽象工厂
抽象工厂模式是一组工厂类,我们可以根据我们的要求使用/实现新的工厂类。然后我们可以派生一个新的类形式新创建的工厂类,而不是直接从抽象工厂类派生。
建造者模式
Builder模式确保,当我们创建一个复杂的对象时,它使用一步一步的创建过程,最后一步返回类的对象。
原型模式
单身设计模式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
{// Methodspublic void Construct( Builder builder ){builder.BuildPartA();builder.BuildPartB();}
}// "Builder"
abstract class Builder
{// Methodsabstract public void BuildPartA();abstract public void BuildPartB();abstract public Product GetResult();
}// "ConcreteBuilder1"
class ConcreteBuilder1 : Builder
{// Fieldsprivate Product product;// Methodsoverride 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
{// Fieldsprivate Product product;// Methodsoverride 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
{// FieldsArrayList parts = new ArrayList();// Methodspublic 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 buildersDirector director = new Director( );Builder b1 = new ConcreteBuilder1();Builder b2 = new ConcreteBuilder2();// Construct two productsdirector.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;}……
}