设计模式系列 - 简单工厂模式
程序员文章站
2024-01-20 17:04:52
简单工厂模式,属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们创建对象时不会对客户端暴露创建逻辑,而是通过一个统一的接口来指向新创建的对象。 介绍 在现实生活中,当我们去 4S 店购车时,我们不用考虑汽车的各个部件是如何生产的,而就可以提走一辆爱车。同样的,在软件开发过程中,当我们 ......
简单工厂模式,属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们创建对象时不会对客户端暴露创建逻辑,而是通过一个统一的接口来指向新创建的对象。
介绍
在现实生活中,当我们去 4s 店购车时,我们不用考虑汽车的各个部件是如何生产的,而就可以提走一辆爱车。同样的,在软件开发过程中,当我们需要访问数据时,可以使用这种方法直接获取到数据,而不用考虑数据的底层存储是使用哪种存储方式。
类图描述
从上述类图中我们可以发现,ishape 为接口类型,定义了所有形状类型所具有的行为,然后具体的类型分别继承该接口并实现相应行为。接着又定义了一个 shapefactory 来统一所有类型的创建,最后,上层通过调用 shapefactory 并转递相应参数来获取具体类型的实例对象。
代码实现
1、创建接口 ishape
public interface ishape { void draw(); }
2、定义相应形状类并继承 ishape 接口
public class circle:ishape { public void draw() { console.writeline("i am a circle"); } } public class rectangle:ishape { public void draw() { console.writeline("i am a rectangle"); } } public class square:ishape { public void draw() { console.writeline("i am a square"); } }
3、创建一个工厂,用于生产指定类型的实体类对象
public enum shapetype { circle, rectangle, square, } public class shapefactory { public ishape getshape(shapetype shapetype) { ishape shape = null; switch (shapetype) { case shapetype.circle: shape = new circle(); break; case shapetype.rectangle: shape = new rectangle(); break; case shapetype.square: shape = new square(); break; } return shape; } }
4、上层调用
class program { static void main(string[] args) { var factory = new shapefactory(); ishape shape = factory.getshape(shapetype.rectangle); shape.draw(); console.readkey(); } }
总结
从上述类图我们可以发现,使用工厂模式可以对复杂对象的创建提供了统一管理。每增加一个类型,都需要增加一个具体类和修改相应的工厂类,对于这一点,在一定程度上会增加系统发杂度。同时对于简单对象的创建,如果也使用这种方式的话就不太合适。
上一篇: (正则表达式)常用的正则标记
下一篇: (国际化程序实现)格式化文本显示