zoukankan      html  css  js  c++  java
  • 设计模式-抽象工厂模式

    设计模式-抽象工厂模式

    https://mp.weixin.qq.com/s/n0pBULUsE3MKN07rVPaJAA

    using System;
    
    
    namespace AbstractFactory_DesignPattern
    {
        /// <summary>
        /// 公司接口
        /// </summary>
        public interface Company
        {
            /// <summary>
            /// 生产电脑
            /// </summary>
            /// <param name="Parameter"></param>
            /// <returns></returns>
            Computer BulidComputer(String Parameter);
            /// <summary>
            /// 生产电话
            /// </summary>
            /// <param name="Parameter"></param>
            /// <returns></returns>
            Telephone BulidTelephone(String Parameter);
        }
        /// <summary>
        /// 电脑
        /// </summary>
        public abstract class Computer
        {
            /// <summary>
            /// 使用电脑
            /// </summary>
            abstract public void DoUse();
        }
        /// <summary>
        /// 电话
        /// </summary>
        public abstract class Telephone
        {
            /// <summary>
            /// 使用手机
            /// </summary>
            abstract public void DoUse();
        }
    
        /// <summary>
        /// 公司A
        /// </summary>
        public class CompanyA : Company
        {
            public Computer BulidComputer(String Parameter)
            {
                if (Parameter == "个人电脑") return new PersonalComputer();
                else if (Parameter == "笔记本电脑") return new NotebookComputer();
                else return null;
            }
            public Telephone BulidTelephone(String Parameter)
            {
                if (Parameter == "座机电话") return new DesktopPhone();
                else if (Parameter == "手机") return new Mobile();
                else return null;
            }
        }
        public class CompanyB : Company
        {
            public Computer BulidComputer(String Parameter)
            {
                if (Parameter == "个人电脑") return new PersonalComputer();
                else if (Parameter == "笔记本电脑") return new NotebookComputer();
                else return null;
            }
            public Telephone BulidTelephone(String Parameter)
            {
                if (Parameter == "座机") return new DesktopPhone();
                else if (Parameter == "手机") return new Mobile();
                else return null;
            }
        }
        /// <summary>
        /// 台机
        /// </summary>
        public class DesktopPhone : Telephone
        {
            override public void DoUse() { Console.WriteLine("这是座机电话的功能"); }
        }
        /// <summary>
        /// 手机
        /// </summary>
        public class Mobile : Telephone
        {
            override public void DoUse() { Console.WriteLine("这是手机的功能"); }
        }
    
        public class NotebookComputer : Computer
        {
            override public void DoUse()
            {
                Console.WriteLine("这是笔记本电脑的功能");
            }
        }
      
        public class PersonalComputer : Computer
        {
            override public void DoUse()
            {
                Console.WriteLine("这是个人计算机的功能");
            }
        }
    
        public class Client
        {
            public static void Main(String[] args)
            {
                Company company1 = new CompanyA();
                Computer computer1 = company1.BulidComputer("个人电脑");
                computer1.DoUse();
                Computer computer2 = company1.BulidComputer("笔记本电脑");
                computer2.DoUse();
                Telephone telephone1 = company1.BulidTelephone("座机电话");
                telephone1.DoUse();
                Telephone telephone2 = company1.BulidTelephone("手机");
                telephone2.DoUse();
            }
        }
    }
  • 相关阅读:
    getElementById返回的是什么?串讲HTML DOM
    DIV+CSS布局问题:一个宽度不确定的DIV里面放三个水平对齐的DIV,左右两个DIV宽度固定为150px,中间那个DIV充满剩余的宽度
    原生JavaScript拖动div兼容多种浏览器
    java一切乱码的解释 以及源头【转】
    java编码问题深入总结
    三菱Q系列PLC基本指令讲解
    三菱Q系列PLC的io分配
    linux函数的阻塞与非阻塞IO及错误处理
    linux系统编程之文件IO
    linux命令(shell)
  • 原文地址:https://www.cnblogs.com/jacketlin/p/11581979.html
Copyright © 2011-2022 走看看