此设计模式提供了根据项目要求创建类的对象的方法。这意味着您可以控制应用程序中对象的创建和生命周期。正如我们在上一篇文章中已经讨论过的不同的创造性设计模式,让我们回忆一下下面的创造性模式,然后我们将在后面讨论不同类型的创造性模式。
单身设计模式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
{
// 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;
}
……
}