当前位置: 首页 > wzjs >正文

站长交流网址导航怎样推广

站长交流,网址导航怎样推广,app营销网站模板,网站和ip建设创造型设计模式:单例、原型、三大工厂、建造者 在软件开发中,设计模式是解决常见问题的经典解决方案。创造性设计模式主要关注对象的创建机制,确保系统在创建对象时具有灵活性和可扩展性。本文将介绍几种常见的创造型设计模式,包…

创造型设计模式:单例、原型、三大工厂、建造者

在软件开发中,设计模式是解决常见问题的经典解决方案。创造性设计模式主要关注对象的创建机制,确保系统在创建对象时具有灵活性和可扩展性。本文将介绍几种常见的创造型设计模式,包括单例模式、原型模式、三大工厂模式(简单工厂、工厂方法、抽象工厂)以及建造者模式

1. 单例模式(Singleton Pattern)

单例模式确保一个类只有一个实例,并提供一个全局访问点。这在需要控制资源访问或共享资源时非常有用。

示例代码

public class Singleton
{private static Singleton _instance;// 私有构造函数,防止外部实例化private Singleton() { }public static Singleton Instance{get{if (_instance == null){_instance = new Singleton();}return _instance;}}public void DoSomething(){Console.WriteLine("Singleton is doing something.");}
}// 使用单例
class Program
{static void Main(string[] args){Singleton singleton = Singleton.Instance;singleton.DoSomething();}
}

2. 原型模式(Prototype Pattern)

原型模式通过复制现有对象来创建新对象,而不是通过实例化类。这在创建成本较高的对象时非常有用。

示例代码

public abstract class Prototype
{public abstract Prototype Clone();
}public class ConcretePrototype : Prototype
{public int Id { get; set; }public override Prototype Clone(){return (Prototype)this.MemberwiseClone();}
}// 使用原型
class Program
{static void Main(string[] args){ConcretePrototype prototype = new ConcretePrototype { Id = 1 };ConcretePrototype clone = (ConcretePrototype)prototype.Clone();Console.WriteLine($"Original ID: {prototype.Id}");Console.WriteLine($"Clone ID: {clone.Id}");}
}

3. 三大工厂模式

3.1 简单工厂模式(Simple Factory Pattern)

简单工厂模式通过一个工厂类来创建对象,而不是直接在客户端代码中实例化对象。

示例代码

public interface IProduct
{void Use();
}public class ConcreteProductA : IProduct
{public void Use(){Console.WriteLine("Using Product A");}
}public class ConcreteProductB : IProduct
{public void Use(){Console.WriteLine("Using Product B");}
}public class SimpleFactory
{public static IProduct CreateProduct(string type){switch (type){case "A":return new ConcreteProductA();case "B":return new ConcreteProductB();default:throw new ArgumentException("Invalid product type");}}
}// 使用简单工厂
class Program
{static void Main(string[] args){IProduct productA = SimpleFactory.CreateProduct("A");productA.Use();IProduct productB = SimpleFactory.CreateProduct("B");productB.Use();}
}

3.2 工厂方法模式(Factory Method Pattern)

工厂方法模式定义了一个创建对象的接口,但由子类决定实例化哪个类。

示例代码

public interface IProduct
{void Use();
}public class ConcreteProductA : IProduct
{public void Use(){Console.WriteLine("Using Product A");}
}public class ConcreteProductB : IProduct
{public void Use(){Console.WriteLine("Using Product B");}
}public abstract class Creator
{public abstract IProduct FactoryMethod();
}public class ConcreteCreatorA : Creator
{public override IProduct FactoryMethod(){return new ConcreteProductA();}
}public class ConcreteCreatorB : Creator
{public override IProduct FactoryMethod(){return new ConcreteProductB();}
}// 使用工厂方法
class Program
{static void Main(string[] args){Creator creatorA = new ConcreteCreatorA();IProduct productA = creatorA.FactoryMethod();productA.Use();Creator creatorB = new ConcreteCreatorB();IProduct productB = creatorB.FactoryMethod();productB.Use();}
}

3.3 抽象工厂模式(Abstract Factory Pattern)

抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

示例代码

public interface IProductA
{void Use();
}public interface IProductB
{void Use();
}public class ConcreteProductA1 : IProductA
{public void Use(){Console.WriteLine("Using Product A1");}
}public class ConcreteProductA2 : IProductA
{public void Use(){Console.WriteLine("Using Product A2");}
}public class ConcreteProductB1 : IProductB
{public void Use(){Console.WriteLine("Using Product B1");}
}public class ConcreteProductB2 : IProductB
{public void Use(){Console.WriteLine("Using Product B2");}
}public interface IAbstractFactory
{IProductA CreateProductA();IProductB CreateProductB();
}public class ConcreteFactory1 : IAbstractFactory
{public IProductA CreateProductA(){return new ConcreteProductA1();}public IProductB CreateProductB(){return new ConcreteProductB1();}
}public class ConcreteFactory2 : IAbstractFactory
{public IProductA CreateProductA(){return new ConcreteProductA2();}public IProductB CreateProductB(){return new ConcreteProductB2();}
}// 使用抽象工厂
class Program
{static void Main(string[] args){IAbstractFactory factory1 = new ConcreteFactory1();IProductA productA1 = factory1.CreateProductA();IProductB productB1 = factory1.CreateProductB();productA1.Use();productB1.Use();IAbstractFactory factory2 = new ConcreteFactory2();IProductA productA2 = factory2.CreateProductA();IProductB productB2 = factory2.CreateProductB();productA2.Use();productB2.Use();}
}

4. 建造者模式(Builder Pattern)

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

示例代码

public class Product
{public string PartA { get; set; }public string PartB { get; set; }public string PartC { get; set; }public void Show(){Console.WriteLine($"PartA: {PartA}, PartB: {PartB}, PartC: {PartC}");}
}public interface IBuilder
{void BuildPartA();void BuildPartB();void BuildPartC();Product GetResult();
}public class ConcreteBuilder : IBuilder
{private Product _product = new Product();public void BuildPartA(){_product.PartA = "Part A";}public void BuildPartB(){_product.PartB = "Part B";}public void BuildPartC(){_product.PartC = "Part C";}public Product GetResult(){return _product;}
}public class Director
{private IBuilder _builder;public Director(IBuilder builder){_builder = builder;}public void Construct(){_builder.BuildPartA();_builder.BuildPartB();_builder.BuildPartC();}
}// 使用建造者模式
class Program
{static void Main(string[] args){IBuilder builder = new ConcreteBuilder();Director director = new Director(builder);director.Construct();Product product = builder.GetResult();product.Show();}
}

总结

创造性设计模式提供了多种灵活的对象创建方式,帮助我们在不同的场景下更好地管理对象的创建过程。单例模式确保全局唯一实例,原型模式通过复制对象来创建新对象,三大工厂模式(简单工厂、工厂方法、抽象工厂)提供了不同层次的抽象来创建对象,而建造者模式则将复杂对象的构建过程分离出来。通过合理使用这些设计模式,我们可以提高代码的可维护性和可扩展性。

http://www.dtcms.com/wzjs/487129.html

相关文章:

  • 大淘客做网站视频石家庄百度关键词优化
  • 泉州市网站制作企业商业软文怎么写
  • 徐州市鼓楼区建设局网站搜索引擎优化 简历
  • 赣州网站建设 赣州网页设计推广app佣金平台正规
  • 网站404怎么做的怎么注册自己的网站
  • 手机免费自建网站北京网站推广机构
  • 祥网站建设长沙企业网站设计
  • 银行官方网站关键词优化举例
  • 企业管理软件供应商网站排名优化方法
  • 做网站有哪些注意事项指数基金怎么选
  • 网站中竖导航栏怎么做网络培训网站
  • 程序员做情侣网站网页设计教程
  • 推广做黄页网站b2b电商平台有哪些
  • 动态logo免费设计在线生成seo主要是指优化
  • 沈阳网站建设公司怎么样厦门站长优化工具
  • 儿童网站开发廊坊关键词排名优化
  • 自己做的图片哪个网站可以出售长春网站优化哪家好
  • 上海市建设考核中心网站百度搜索风云榜单
  • 手机网站案例 鸿网站页面设计模板
  • 网站开发移动端网站关键词优化推广
  • 建站宝盒可以做视频聊天交友网站吗武汉整站seo数据上云
  • 小程序代码生成器seo排名谁教的好
  • 网站怎么做导航什么是推广
  • 分子信标探针在线设计网站关键词com
  • 免费开源的网站系统大数据智能营销
  • 如何用凡科建设手机教学网站腾讯会议开始收费
  • 沈阳做网站在哪如何推广一个平台
  • 北京网站关键词排名推广百度小程序怎么进入
  • 网站用什么语言太原关键词排名推广
  • 为了推出企业网站建设太极seo