zoukankan      html  css  js  c++  java
  • 工厂模式中的泛型接口

    Java

    @@@code

    public interface DataBodyFormatter<T> {
        void Serialize(ByteBuf writer, T value, Version version);
        T Deserialize(ByteBuf reader,Version version);
    }

    public class DataBodyFormatterFactory {


    public DataBodyFormatterFactory() {
    }

    /**
    *
    系统内的formatters,自动注册
    */
    @Autowired
    Map<String, DataBodyFormatter> formatters;

    }

    public <D> DataBodyFormatter<D> getDataBodyFormatter(long code, boolean isReply) {

       

    }

    # 使用,默认就是object

    dataBodyFormatter = _DataBodyFactory.getDataBodyFormatter(code, isClientMode());

       

       

    @@#

       

    而在NET中

    @@@code

    public interface IDataBodyFormatterBase

    {

         object Deserialize(IByteBuffer reader, Version version);

    }

    public interface IDataBodyFormatter<T> : IDataBodyFormatterBase

    {

    void Serialize(IByteBuffer writer, T value, Version version);

    new T Deserialize(IByteBuffer reader, Version version);

    }

    # 使用一个基类

    public abstract class TDataBody<T> : DataBody, IDataBodyFormatter<T>

    {

    public abstract T Deserialize(IByteBuffer reader, Version version);

    public abstract void Serialize(IByteBuffer writer, T value, Version version);

       

    object IDataBodyFormatterBase.Deserialize(IByteBuffer reader, Version version)

    {

    return this.Deserialize(reader, version);

    }

    }

    public class DataBodyFormatterFactory : IDataBodyFormatterFactory

    {

       

    [Autowired()]

    public Dictionary<string, IDataBodyFormatterBase> FormatterDict { get; set; }

       

    //不允许的写法

    //public Dictionary<string, IDataBodyFormatter> FormatterDict2 { get; set; }

       

    public IDataBodyFormatterBase getDataBodyFormatter(int code, bool isReply = false)

    {

    }

    }

    # 使用

    dataBodyFormatter = _DataBodyFactory.getDataBodyFormatter(code, IsClientMode);

       

    @@#

  • 相关阅读:
    【CodeForces 438D 】The Child and Sequence
    【雅礼集训 2017 Day1】市场
    【POJ2528】Mayor's posters
    【NOIP模拟】图论题Graph
    【BZOJ2654】Tree
    【NOIP模拟】函数
    【NOIP模拟】箱子
    【CQOI2014】数三角形
    【USACO2009Feb】股票市场
    【APIO2009-3】抢掠计划
  • 原文地址:https://www.cnblogs.com/QinQouShui/p/14310335.html
Copyright © 2011-2022 走看看