设计模式—工厂三兄弟

前言

设计模式一共有23种,光工厂模式就有三种,刚开始学的时候还能分的清楚,到后面越来越像了,总的来说目的都是为了易维护,易拓展;手段是封装继承和多态;原则是上篇博客写到的六大原则。但是既然这是前人留下的宝贵经验并且成文流传下来我们就应该先站在巨人的肩膀上。下面是通过对比的学习来研究工厂模式。

简单工厂模式

定义:通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
个人理解:字面上理解工厂的意思就是它是一个类似于工厂的一个模式,工厂是用来生产产品的,我们的工厂模式是通过一个工厂类来“子类”。主要目的是为了封装逻辑,把业务和界面分开。
特征代码:

public class subjectFactory
{
    public static sbject createsubject(string subject)
    {
        sbject sbj=null;
        switch(subject)
        {
            case "sbj1":
                sbj=new subject1();
                break;
        }
    }
}
subject sbj;
sbj=subjectFactory.createsubject("sbj1");

工厂方法模式

定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
个人理解:把工厂部门化,每个部门就相当于一个工厂,他们都实现抽象工厂这个接口。
特征代码:

interface IFactory//创建工厂接口
{
    Operation CreateOperation();
}
Class AddFactory:IFactory//加法工厂类
{
    public Operation CreateOperation()
    {
        return New OperationAdd();
    }   
}
IFactory operFactory = new AddFactory();//利用接口实现多态

抽象工厂模式

定义:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
个人理解:在工厂方法的基础上拓展多个接口。
优点:便于交换产品细节,只需要在初始化的时候出现一次;创建实例过程与客户端分离。
缺点:增加功能的话需要改动太多
措施:用简单工厂改进抽象工厂

对比

  • 共同点
    既然都是工厂模式他们都是可以用来创建实例的。
  • 不同点
    简单工厂的优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对客户端来说,去除了与具体产品的依赖。
    工厂方法模式实现时,客户端需要决定实例化哪一个工厂来实现要实现的类。工厂方法是把简单工厂的内部逻辑判断移动到了客户端,想要添加功能还得修改客户端。
    工厂方法是在简单工厂上把工厂细分通过接口来实现的。
    抽象工厂是把工厂方法的一个接口拓展为多个。
评论 37
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值