相关疑难解决方法(0)

如何防止类在工厂外实例化

我有一个工厂.我不想允许这个工厂生产的类在工厂外实例化.如果我将它们变成抽象的,静态的,或者给它们私有构造函数,那么它们根本就不可实例化!这是语言限制还是什么?

我不想允许这个

var awcrap = new Extrude2013 (); // BAD !!!
awcrap.extrudify (); // I don't want to allow this
Run Code Online (Sandbox Code Playgroud)

其余代码:

using System;

namespace testie
{
    public enum ExtrudeType { Extrude2013,  Extrude2014 }

    public interface IExtrudeStuff {
        void extrudify();
    }

    public class Extrude2013 : IExtrudeStuff { 
        public void extrudify(){ 
            Console.WriteLine ("extrudify 2013");
        }
    }

    public class Extrude2014 : IExtrudeStuff { 
        public void extrudify(){ 
            Console.WriteLine ("extrudify 2014");
        }
    }
    public static class ExtrudeFactory {
        public static IExtrudeStuff Create(ExtrudeType t) {
            switch …
Run Code Online (Sandbox Code Playgroud)

c# factory

10
推荐指数
1
解决办法
2388
查看次数

确保对象仅由工厂创建(C#)

如何确保某个类仅由工厂实例化而不是直接调用new

编辑:我需要工厂是一个单独的类(为了依赖注入目的)所以我不能使它成为实例化类的静态方法,所以我不能使新的私有.

c# factory new-operator

6
推荐指数
4
解决办法
3623
查看次数

我可以限制哪些类可以实例化另一个类吗?

可能重复:
C#中的工厂模式:如何确保对象实例只能由工厂类创建?

假设我有一个知道如何制作Square的Factory类.如果我觉得只有Factory类知道如何制作一个正方形并且我想阻止其他人(即使在同一个程序集中)创建一个正确的(如果有这样的东西)那么方法呢?

c# oop

3
推荐指数
1
解决办法
2851
查看次数

标签 统计

c# ×3

factory ×2

new-operator ×1

oop ×1