zoukankan      html  css  js  c++  java
  • 抽象工厂

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

    namespace 抽象工厂
    {
    class Program
    {
    static void Main(string[] args)
    {
    //IQueryable<Person>
    /////List<Person> ls = new List<Person>();
    //IList<Person>

    }
    }

    public class Person
    {
    public int Id { get; set; }
    public string Name { get; set; }
    }

    /*其实工厂和抽象工厂没有多大区别,只不过是抽象工厂生产的商品是多个而已
    通俗的说,就是抽象工厂模式的具体工厂里面会有多个实例具体对象的方法
    更直观的就是,抽象工厂模式每个工厂一次造多个玩意,而工厂模式的每个工厂只造一个玩意*/
    public abstract class Product
    {
    public abstract void work();
    }
    public class ProductA : Product
    {
    public override void work()
    {
    Console.Write("ProductA");
    }
    }
    public class ProductB : Product
    {
    public override void work()
    {
    Console.Write("ProductB");
    }
    }
    public abstract class Car
    {
    public abstract void Build();
    }
    public class CarA : Car
    {
    public override void Build()
    {
    Console.Write("Build CarA");
    }
    }
    public class CarB : Car
    {
    public override void Build()
    {
    Console.Write("Build CarB");
    }
    }
    public abstract class AbstractFactory
    {
    //工厂生产多个对象
    public abstract Product newproduct();
    public abstract Car newCar();
    }
    public class AbstractFactoryA : AbstractFactory
    {
    public override Product newproduct()
    {
    return new ProductA();//子类里面实现具体的实例化
    }
    public override Car newCar()
    {
    return new CarA();
    }
    }
    public class AbstractFactoryB : AbstractFactory
    {
    public override Product newproduct()
    {
    return new ProductB();//子类里面实现具体的实例化
    }
    public override Car newCar()
    {
    return new CarB();
    }
    }

    public class AbstractFactoryClient
    {
    public static void GetFactoryMethod()
    {
    AbstractFactory factorysubA = new AbstractFactoryA();
    AbstractFactory factorysubB = new AbstractFactoryA();

    Product pruductA = factorysubA.newproduct();
    Product pruductB = factorysubB.newproduct();
    Car factorycarA = factorysubA.newCar();

    factorycarA.Build();

    pruductA.work();
    pruductB.work();
    }
    }

    }

  • 相关阅读:
    leetcode——33.搜索旋转排序数组
    leetcode——80.删除排序数组中的重复项2
    leetcode——26.删除排序数组中的重复项
    leetcode——18.四数之和
    leetcode——42.接雨水
    leetcode——11.盛最多水的容器
    leetcode——16.最接近的三数之和
    leetcode——15.三数之和
    leetcode——1002.查找常用字符
    004 linux学习:【第4篇】之nginx
  • 原文地址:https://www.cnblogs.com/sumg/p/3742753.html
Copyright © 2011-2022 走看看