大话设计模式----工厂模式

最近博主再看java的设计模式,今天学习了工厂模式,结合看的书和网上搜的资料,大体明白了工厂模式是怎么一回事。

工厂设计模式,考虑一个单独的类来做这个创造实例的过程,这就是工厂设计模式。

工厂设计模式分为简单工厂设计模式和抽象工厂设计模式,网上一部分人认为只有抽象工厂设计模式才是真正的设计模式,不过大部分人在用简单设计模式,那么这两种设计模式的区别在哪里呢:

简单工行设计模式:

一个抽象产品类,可以派生出多个具体产品类。

一个抽象工厂类,可以派生出多个具体工厂类。

每个具体工厂类只能创建一个具体产品类的实例。

抽象工厂设计模式:

多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。

一个抽象工厂类,可以派生出多个具体工厂类。

每个具体工厂类可以创建多个具体产品类的实例。


可能抽象工厂设计模式在一些大型项目里用的比较多,所以在这里我举一个简单工厂设计模式的栗子(想起了栗子哥)。

有一个题目,请用C++,Java,C#或VB.NET任意一种编写实现一个计算机控制台程序,要求输入两个数和运算符号,得到结果。首先这个代码并不难,我第一反应C++几个if判断一下,就写完了(毕竟在acm里待的成了习惯。。)。其实不然,首先,如果按照acm的风格来写,没有体现出面向对象的特点不说,并且效率也不高,比如加、减、乘、除这四个运算,加入我输入了加号,也就是说我多判断了3次if,有人说了,改用switch不就行了,但是一样不好维护啊。有人就说了,不就是维护吗,我多加几个类,多封装几次不就可以了。这样就真的好维护了?那再假如说,我要加一个开方运算,有人就要去修改operator类了,那我们为什么不让业务逻辑与界面逻辑分开呢,让他们的耦合度下降。哈,很好。但是,面向对象有三大特征,封装、继承、和多态。这里我们只用到了封装,那怎么用继承和多态呢(不要以为只是一个计算机小项目就用不到继承和多态了),继承就不多说了,我们可以抽象一个operator类,多态呢,这里就是简单工厂设计模式了,我们设一个工厂类,里面有一个switch,每一种情况我们实例化一个对象,这样我们就把耦合度降低,而且易于维护了。

可以见代码:

http://www.cnblogs.com/Files/cj723/BigTalkDesignPattenSourceCode.rar

现在的你还认为代码无错便是优吗?

其实,new一个实体对象是一件很谨慎的事情(不是指值对象),不要随便new。

其实对于抽象工厂模式,简单来说,就是可以把有一些联系或者相近的产品,放到一个工厂去生产,没有必要单独再开一个工厂了。

要记住一点,面向对象编程,并不是类越多越好,类的划分是为了封装,但分类的基础是抽象,具有相同属性和功能的对象的抽象集合才是类。

编程是一门技术,更是一门艺术。不能只满足与写完代码运行结果正确就完事,时常考虑如何让代码更加简洁,更加容易维护,容易扩展和复用,只有这样才能得到真正的提高。


ps:抽象工厂设计模式符合面向对象六大原则里的开闭原则、里式替换原则和依赖倒置原则,有兴趣的可以去搜搜看。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
简单工厂模式(Simple Factory Pattern)是一种创建型设计模式,它通过一个工厂类来创建不同类型的对象,而无需暴露对象创建的逻辑给客户端。在Python中,简单工厂模式可以通过一个工厂类来创建不同的产品对象。下面是一个简单的示例: ```python class Product: def operation(self): pass class ConcreteProductA(Product): def operation(self): print("Performing operation A.") class ConcreteProductB(Product): def operation(self): print("Performing operation B.") class SimpleFactory: @staticmethod def create_product(product_type): if product_type == "A": return ConcreteProductA() elif product_type == "B": return ConcreteProductB() else: raise ValueError("Invalid product type.") # 使用简单工厂创建产品对象 factory = SimpleFactory() product_a = factory.create_product("A") product_a.operation() product_b = factory.create_product("B") product_b.operation() ``` 在上述示例中,`Product` 是一个抽象产品类,`ConcreteProductA` 和 `ConcreteProductB` 是具体产品类。`SimpleFactory` 是工厂类,通过 `create_product` 方法根据不同的产品类型创建相应的产品对象。 通过简单工厂模式,客户端无需知道具体的产品类,只需要通过工厂类来创建产品对象。这样可以降低客户端与具体产品类的耦合度,并且当需要新增产品时,只需要修改工厂类即可。 希望这个简单的示例能帮助你理解简单工厂模式在Python中的应用。如果有任何进一步的问题,请随时提问!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值