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);

       

    @@#

  • 相关阅读:
    C++中几种字符串表示方法
    oracle11g卸载(win10)
    Dbvisualizer 连接oracle数据库
    严重: Exception starting filter struts2 Unable to load configuration.
    eclipse启动Tomcat服务输入http://localhost:8080/报404
    Tomcat内存溢出解决办法
    A Java Runtime Environment(JRE) or Java Development Kit (JDK) must be available in order to run Eclipse.
    Spring容器装配bean的方式
    Spring容器的基本实现
    spring环境搭建
  • 原文地址:https://www.cnblogs.com/QinQouShui/p/14310335.html
Copyright © 2011-2022 走看看