• 程序员的偷懒 设计模式之抽象工厂


    模式这个东西从去看就开始看,先是看设计模式 那叫一个晕。

    后来又有了“大话设计模式"这本书,才有些能够理解了。
    但是理解和应用还是差了很远。
    真正的使用从现在才开始。
    为什么用模式呢,说明白了,就是为了少写代码了。为了软件容易维护。最近刚顿悟了抽像工厂,给大家举个例子,分享一下,嘿嘿。
    抽像工厂在设计模式那本书中说明的好处是 可以使不同的产品族进行互相替换,可是怎么才叫互相替换呢?
    考虑下面的情况。
    老板让你写一个组业务类。
    现在的状况,你只能用.Net Framework 2.0去写。但是你一直在学习3.5,想在日后把这些用3.5重写。
    那么,在现在的情况下。你做如下工作。
    把所有的类(你设计好的)都抽像成对应的接口。
    定义一个工厂的接口,生成这些产品接口的实例。
    用.Net Framewok 2.0去实现一个工厂和相应的类。
    这样,你上层的开发人員在调用你的类库时,只需要实例一个2.0的工厂,再去生成这些实体类就可以了。当然,他看到的只是各种接口。

    以后升级怎么办呢?
    定义一个.Net Framework 3.5的工厂
    定义一组3.5的实体类。
    然后,让你的上层开发人員把那句实例2.0的工厂换成3.5的工厂就oK了。。

    升级成功。。


    但是还有一个不好的地方。。
    就是 你的上层开发人員还 是需要改代码的。他得把2。0的工厂都改成3.5的工厂。 如果他只实例了一个工厂还好,如果是n个,他会很烦的。。。

    那么这种情况下,就考虑使用单例。。
    在你的类库里,设计一个静态方法,返回一个工厂的接口。
    让你的上层开发人員用这个静态方法去实例一个工厂。
    在2.0时代,你用这个方法给他返回一个2.0的工厂。
    升级时呢?返回一个3.5的工厂就oK了。


    这样,你这面做了变化,做了升级,可是你的上层开发人員什么都不用改。
    够酷吧。
    呵呵
    一点小感想,文笔烂,大家不要笑啊。
    欢迎cs||hit们拍砖啊。。。。


    简单的代码

    你的接口。
    namespace yourName{
    interface IProductA{}
    interface IProdoctB{}
    interface IFactory{
    IProductA CreateA();
    IProductB CreateB();
    }
    }
    2.0j时代的代码
    namespace yourName2{
    class ProductA:IProductA{}
    class ProcuceB:IProductB{}
    class Factory:IFacotry{}
    给它一个实例方法
    class Global{
    static IFactory GetInstance(){
    return new yourName2.Factory();
    }
    }

    现在升级到3.5啦。。。
    实例类库
    namespace yourName35{
    class ProductA:IProductA{}
    class ProductB:IProductB{}
    class Facotry:IFactory{}
    }
    改一下Global
    class Global{
    static IFactory GetInstance{
    return new yourName32.Factory();
    }
    }



    你的上层开发人員,永远一个样子。。。
    IFactory factory = Global.GetInstance();
    IProcductA a = factory.CreateA();
    IProcductB b = factory.CreateB();
  • 相关阅读:
    浅谈ajax
    textsizeadjust属性
    vue通信
    json、jsonp的定义和区别
    js中的eval()和catch()
    WebRTC之Android客户端
    人工神经网络(从原理到代码) Step 01 感知器 梯度下降
    简单实用的matlab柱状图显示比例及计数
    JAVA 常用包
    设置MySQL允许远程连接
  • 原文地址:https://www.cnblogs.com/geyunfei/p/1332132.html
Copyright © 2020-2023  润新知