简单工厂模式是属于创建型模式,简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。(图片来自百度百科)
//抽象类 abstract class AbsClass { //抽象方法:提供一些列的算法操作 public abstract void returnCash(string org); } //继承自抽象类 class A:AbsClass { //具体方法:提供一些列的算法操作 public override double returnCash() { Console.WriterLine("A类方法"); } } //继承自抽象类 class B:AbsClass { //具体方法:提供一些列的算法操作 public override double returnCash() { Console.WriterLine("B类方法"); } } 简单工厂类 //现金收取工厂 class CashFactory { //根据条件返回相应的对象 public static AbsClass createCashAccept(string type) { AbsClass cs = null; switch (type) { case "A": cs = new A(); break; case "B": cs = new B(); break; case "...": ........ .... break; } return cs; } } 客户端调用: AbsClass csuper = CashFactory.createCashAccept("A"); csuper .returnCash();
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。
//策略Context class CashContext { //声明一个现金收费父类对象 private AbsClass cs; //设置策略行为,参数为具体的现金收费子类(正常,打折或返利) public CashContext(AbsClass csuper) { this.cs = csuper; } //得到现金促销计算结果(利用了多态机制,不同的策略行为导致不同的结果) public double GetResult(double money) { return cs.acceptCash(money); } } 客户端调用: AbsClass cc = null; cc = new CashContext(new A()); cc.GetResult(100); Console.Read();
这两个模式比较类似,一直纠结于两者区别:
1、面向对象编程的一种重要思维方式是要将变化点封装,对于类似于商场促销等变化点就是选择所谓的算法对象,在这个场景中,任何一个改变都会引起客户端和实现的对象的改变,股选择减少变化点,策略类就出现了,而常用的简单工厂和策略模式相结合,此处却不是很合适,否则又会回到单纯的简单工厂模式;
2、策略模式要求定义了算法家族并分别封装起来,即为了实现一种结果在不同的条件下可能有不同的的方法,但是条件却相对固定,这时可以考虑使用简单工厂和策略模式相结合的方法,将算法封装,之队客户端(调用者)提供工厂对象,这样子客户端子需要了解工厂对象就可以了,降低耦合度;
3、对于在不同的条件下实例化不同的对象,而且实现的方法不同(或者说,需要不同的对象)此时应只使用简单工厂模式。例:Obj A->a():bool 和Obj B->b():string对象,调用A返回结果是true 或者false;使用B返回是string类型,也可以说,使用A和B是为了实现不同的作用。这个时候就要使用简单工厂模式。
个人总结,可能有不对的地方,欢迎讨论拍砖~!
相关推荐
今天我们将探讨两种重要的设计模式:简单工厂模式和策略模式。这两种模式都是面向对象设计的核心概念,它们各自有着独特的优势和适用场景。 首先,我们来理解简单工厂模式。简单工厂模式是创建型设计模式的一种,它...
它是简单工厂模式的一种扩展,它将产品实例化的责任委托给子类。在手机加工厂的场景中,每个手机品牌工厂都可以看作是工厂方法模式的一个实现,它们各自负责特定型号手机的组装和测试,例如iPhone工厂负责制造iPhone...
在软件设计模式的世界里,"简单工厂模式"、"代理模式"和"策略模式"都是经典的设计模式,它们各自有着独特的应用场景和优缺点。本文将深入解析这三种模式的原理和区别,帮助读者理解它们在实际开发中的运用。 首先,...
工厂模式通常分为简单工厂模式、工厂方法模式和抽象工厂模式三种类型。在实际项目中,例如数据库连接的创建,我们可以使用工厂模式来创建不同类型的连接对象,如MySQL连接、Oracle连接等,而无需关心具体的实现细节...
在软件设计模式中,"简单工厂模式"和"策略模式"是两种常用的设计模式,它们在不同的场景下有着各自的优势。本篇文章将探讨如何利用这两种模式实现简单的排序算法,以提高代码的可读性和可扩展性。 首先,简单工厂...
在软件设计模式中,工厂模式是一种非常...在实际项目中,工厂模式经常与其他设计模式(如策略模式、建造者模式等)结合使用,以解决更复杂的问题。阅读并理解这些代码有助于深入理解工厂模式及其在Java编程中的应用。
简单工厂模式、策略模式以及反射是Java编程中非常重要的概念,它们都是软件设计模式和语言特性的典型应用,对于理解和构建高效、可扩展的代码至关重要。 简单工厂模式是一种创建型设计模式,它提供一个工厂方法,...
1. **解耦**: 简单工厂模式将对象的创建与使用分离,客户端只需知道工厂,而不需要知道具体的产品类,降低了客户端代码与产品类之间的耦合度。 2. **易扩展**: 当需要添加新的产品类型时,只需要在工厂类中增加相应...
PHP 设计模式实例之观察者模式、策略模式、简单工厂模式 PHP 设计模式实例之观察者模式、...观察者模式用于在对象之间定义一对多的依赖关系,策略模式用于定义一系列的算法,简单工厂模式用于提供一个创建对象的接口。
【Java 简单工厂模式】简单工厂模式是一种创建型设计模式,它的主要思想是提供一个工厂类,根据传入的参数动态地返回一个产品对象。这种模式将对象的创建与对象的使用分离,使得代码更加简洁且易于维护。 在Java中...
简单工厂模式是设计模式中的一种创建型模式,它提供了一种创建对象的最佳方式。在这个模式中,一个专门的类(称为工厂类)负责创建对象,客户端不再直接创建对象,而是通过调用工厂类的方法来得到所需的产品。这种...
总的来说,简单工厂模式是一种基础且实用的设计模式,尤其适用于对象创建过程较为复杂,且希望将创建过程与使用过程分离的场景。在实际开发中,我们可以结合其他设计模式,如策略模式、工厂方法模式等,以适应更复杂...
本案例主要探讨了三种经典的设计模式:抽象工厂模式、工厂方法模式和策略模式,并以手机加工厂为实际应用场景进行阐述。 首先,**抽象工厂模式**是创建型设计模式之一,它提供一个接口,用于创建相关或依赖对象的...
python 项目里常用的设计模式 单例模式 组合模式 策略模式 抽象工厂 代理模式 工厂模式 观察者模式简单工厂 建造者模式 模板模式 桥接多维度 桥接模式 适配器模式 外观模式 享元模式 责任链组合模式
5. **模式扩展**:讨论如何在简单工厂模式基础上进行扩展,如使用策略模式或工厂方法模式以增加灵活性。 6. **模式对比**:与其他创建型模式(如工厂方法、抽象工厂)进行比较,突出各自的特点和适用范围。 通过...
MVC模式使得用户界面与数据逻辑分离,单例模式保证关键资源的唯一访问点,代理模式在访问对象前后增加额外的功能,工厂模式将对象创建与使用分离,简单工厂模式为对象创建提供一个简单便捷的接口。通过这些模式,...
本篇文章将聚焦于两种重要的设计模式——策略模式和简单工厂模式,并探讨如何将它们结合应用于排序算法的实现。 **策略模式**是一种行为设计模式,它使你能在运行时改变对象的行为。在策略模式中,一个类的行为或其...
- **策略模式与享元模式**: 策略模式与享元模式可以结合使用,当一系列策略算法对象的功能较为单一且需要频繁使用时,可以使用享元模式来减少内存占用。 ### 结论 简单工厂模式和策略模式作为设计模式中非常实用的...
**简单工厂模式**是一种创建型设计模式,它提供了一个创建对象的接口,但允许子类决定实例化哪个类。这个模式使代码可以独立于实际的产品类进行编写。 ### 模式概念 在软件工程中,当一个类不知道它所应该创建的...