工厂方法

工厂方法
特点:
将对象的创建放在工厂类中,利用抽象原理,将实例化行为延迟到工厂类中

using System;
using System.Collections.Generic;
using System.Text;

namespace OOAD_FactoryMethod
{
    class Program
    {
        static void Main(string[] args)
        {
            AbsFactory af = new DbFactory();
            AbsLog al = af.CreateLog();
            Console.WriteLine("日志内容" + al.getLog()[0].Message + "记录时间" + al.getLog()[0].RecordTime);

            AbsFactory af2 = new TxtFactor();
            AbsLog al2 = af2.CreateLog();
            Console.WriteLine("日志内容" + al2.getLog()[0].Message + "记录时间" + al2.getLog()[0].RecordTime);

            Console.Read();
        }
    }


    public class Log
    {
        /// <summary>
        /// 构造方法
        /// </summary>
        /// <param name="msg">日志内容</param>
        /// <param name="rt">日志记录时间</param>
        public Log(string msg, DateTime rt)
        {
            this.Message = msg;
            this.RecordTime = rt;
        }

        /// <summary>
        /// 日志内容
        /// </summary>
        private string _message;
        public string Message
        {
            get { return _message; }
            set { _message = value; }
        }

        /// <summary>
        /// 日志记录时间
        /// </summary>
        private DateTime _recordTime;
        public DateTime RecordTime
        {
            get { return _recordTime; }
            set { _recordTime = value; }
        }
    }

    public abstract class AbsLog
    {
        public abstract List<Log> getLog();
        public abstract bool InsertLog(Log log);
    }

    public class DbLog : AbsLog
    {
        public override List<Log> getLog()
        {
            List<Log> list = new List<Log>();
            list.Add(new Log("DB", DateTime.Now));
            return list;
        }
        public override bool InsertLog(Log log)
        {
            return true;
        }
    }

    public class TxtLog : AbsLog
    {
        public override List<Log> getLog()
        {
            List<Log> list = new List<Log>();
            list.Add(new Log("Txt", DateTime.Now));
            return list;
        }
        public override bool InsertLog(Log log)
        {
            return true;
        }
    }

    public abstract class AbsFactory
    {
        public abstract AbsLog CreateLog();
    }

    public class TxtFactor : AbsFactory
    {
        public override AbsLog CreateLog()
        {
            return new TxtLog();
        }
    }

    public class DbFactory : AbsFactory
    {
        public override AbsLog CreateLog()
        {
            return new DbLog();
        }
    }

}

转载于:https://www.cnblogs.com/Clivia/archive/2010/11/07/1871088.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/410830.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

centos7安装svn客户端和使用

rpm -qa subversion yum remove -y subversion yum install -y subversion svnserve --version svn checkout http://xxx.xx.xx/xx转载于:https://www.cnblogs.com/lihan829/p/11154631.html

linux可用机场客户端,Linux系统可用的6款Bittorrent客户端

大家都知道迅雷目前尚不支持Linux系统&#xff0c;其实使用Bittorrent客户端进行下载未尝不是一个好的选择&#xff0c;这里给大家介绍6款Linux可用Bittorrent客户端&#xff0c;方便经常需要进行文件下载的Linux用户。1.KtorrentKtorrent是KDE桌面环境默认安装的Bittorrent工具…

linux中resize的含义,linux的resize2fs命令

Linux下的resize2fs命令被用来增大或收缩未加载的文件系统的大小。下面由学习啦小编为大家整理了linux下resize2fs命令的相关知识&#xff0c;希望对大家有帮助!linux的resize2fs命令详解文件系统管理 resize2fs命令被用来增大或者收缩未加载的“ext2/ext3”文件系统的大小。如…

C#理论知识

override&#xff1a;要扩展或修改继承的方法、属性、索引器或事件的抽象实现或虚实现&#xff0c;必须使用 override 修饰符。重写的基方法必须是 virtual、abstract 或 override 的。override 声明不能更改 virtual 方法的可访问性。 override 方法和 virtual 方法必须具有相…

H3C 环路避免机制一:路由毒化

转载于:https://www.cnblogs.com/fanweisheng/p/11156838.html

c语言循环字符,字符串 非暴力for循环法(内附C语言代码)

对于长度为5位的一个01串&#xff0c;每一位都可能是0或1&#xff0c;一共有32种可能。它们的前几个是&#xff1a;0000000001000100001100100请按从小到大的顺序输出这32种01串。输入格式本试题没有输入。输出格式输出32行&#xff0c;按从小到大的顺序每行一个长度为5的01串。…

.net自定义控件Control、WebControl、CompositeControl

.net自定义控件Control、WebControl、CompositeControl 一、呈现方法 1、Control主要有以下4个方法用于呈现 1 //该方法为入口方法2 public virtual void RenderControl (HtmlTextWriter writer) 3 { 4 this.RenderControl(writer,this.xxxAdapter); 5 } 6 7 p…

[html] const nums1 = [1, 2, 2, 1], nums2 = [2] 交集是什么?

[html] const nums1 [1, 2, 2, 1], nums2 [2] 交集是什么&#xff1f; let a [1, 2, 2, 1]; let b [2]; let aSet new Set(a); let bSet new Set(b);let intersection Array.from(new Set(a.filter(v > bSet.has(v)))) console.log(intersection); // [2]个人简介 …

About Me

&#xff08;参考Matirx67大牛的格式&#xff09; 网名&#xff1a;Sephiroth Lee 年龄&#xff1a;不会算 生日&#xff1a;1994-1-20 性别&#xff1a;男 血型&#xff1a;不知道 星座&#xff1a;摩羯座 家乡&#xff1a;河北 学校&#xff1a;衡水中学 地址&#xff1a;衡水…

三星ARM

http://www.samsung.com/global/business/semiconductor/mobilesocProductDown.do?userIdtechinfinicores.com转载于:https://www.cnblogs.com/zd_ad/archive/2010/11/16/1878238.html

Java中连接池

最近在看书&#xff0c;其中有一段是&#xff1a; 相信有大佬已经能看得出来这是《企业IT架构转型之道》这本书了&#xff08;这是一本不错的书&#xff0c;推荐工作时长>2年的软件人员可以看看&#xff09;~~ 对于红色框内的那段文字&#xff0c;我有两个概念不是很明白&am…

C语言中 用选择结构编译算法,C语言程序设计立体化教程(高等教育立体化精品系列规划教材)...

导语内容提要李刚、唐炜主编的《C语言程序设计立体化教程(高等教育立体化精品系列规划教材)》主要分为四篇&#xff1a;语法基础篇、程序设计结构篇、初级应用篇和高级应用篇&#xff1b;其中第一篇语法基础部分介绍了C语言概述和C语言数据与运算&#xff1b;第二篇程序设计结构…

第二次实验报告(漏)

C程序设计实验报告 实验项目&#xff1a; 1.if语句的应用2.switch/case语句的应用3.switch/case语句嵌套if语句的应用4.switch/case结构的嵌套应用5.分析程序 姓名&#xff1a;王治林   实验地点&#xff1a;514教室   实验时间&#xff1a;2019.4.3 一、实验目的与要求 …

BAT教程 :第五节(set命令详解)

先回顾一下他设置自定义变量的用法例子:echo offsetvar我是值echo%var%pause请看setvar我是值,set是命令 var是变量名 号右边的"我是值"是变量的值在批处理中我们要引用这个变就把var变量名用两个%(百分号)扩起来,如%var%这种SET语法只能直接在BAT代码的提前赋予变…

rip c语言,GNU C 对标准C语言的扩展

特殊属性声明GNU C 允许声明函数、变量和类型的特殊属性&#xff0c;以便进行手工的代码优化和定制。如果要指定一个属性声明&#xff0c;只需要在声明后添加__ attribute __((ATTRIBUTE))。其中ATTRIBUTE为属性说明&#xff0c;如果存在多个属性&#xff0c;则以逗号分隔。GNU…

python学习格式化输出(一)

name input(请输入你的姓名&#xff1a;) age input(请输入你的年龄&#xff1a;) job input(你的职业是&#xff1a;) msg -------------info %s------------ 我的名字叫&#xff1a;%s 我的年龄&#xff1a;%s 我的职业是&#xff1a;%s ------------end-------------- %…

Ubuntu linux上Nautilus安装RabbitVCS扩展

安装包 $ sudo add-apt-repository ppa:rabbitvcs $ sudo aptitude update $ sudo apt-get install rabbitvcs-core rabbitvcs-nautilus 重新启动nautilus $ nautilus -q 转载于:https://www.cnblogs.com/wdpp/archive/2010/11/22/2386291.html

bat与C语言混合编程,BAT与HTML混合编程的方法

:οnkeypresswindow.close()>colorgreen>HTMLCodes我一直是菜菜。就楼主这个帖来说&#xff0c;其思想就是把VBS混合编程的思想用到html语言上&#xff0c;随便举个混合编程的例子&#xff0c;来表达(我就懂点点VBS)楼主此贴的思想&#xff1a; 2>nul 3>nul&ec…

小数转换成二进制c语言,只写出了十进制小数转换成二进制的,求二进制小数转十进制的...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include #include #include #define NUM 2#define ZERO 0.000001int PrnMainMenu(void);void ProcessLoop(void);void two(void);void ten(void);int a,b[10],i0,c0;void integer(int n) //定义整数部分{if(n>0){integer(n/NUM…

SAS 读取数据文件

每次读取数据时需要告诉SAS3件事&#xff1a;1&#xff1a;数据存在哪里&#xff1f;2&#xff1a;数据的形式3&#xff1a;创建的数据集的类型&#xff08;永久/临时&#xff09; 1 读取SAS数据集 DATA temp; /*temp 为创建的数据集名称*/ INFILE C\mysas\data\temp.dat; /*数…