zoukankan      html  css  js  c++  java
  • 设计模式:简单工厂

    简单工厂的作用是实例化对象,而不需要客户了解这个对象属于哪个具体的子类。
    
             简单工厂实例化的类具有相同的接口,在类有限并且基本不需要扩展时,可以使用简单工厂。例如,数据库连接对象,常用的数据库类类可以预知,则使用简单工厂。 
              采用简单工厂的优点是可以使用户根据参数获得对应的类实例,避免了直接实例化类,降低了耦合性;缺点是可实例化的类型在编译期间已经被确定,如果增加新类型,则需要修改工厂,不符合OCP的原则。简单工厂需要知道所有要生成的类型,当子类过多或者子类层次过多时不适合使用。
    
    namespace DP 
    { 
        class Client 
        { 
            static void Main(string[] args) 
            { 
                // 避免了这里对Sugar类的直接依赖 
                IFood food = FoodShop.Sale("Sugar"); 
              food.Eat(); 
          
                // 避免了这里对Bread类的直接依赖 
                food = FoodShop.Sale("Bread"); 
               food.Eat(); 
               Console.Read(); 
            } 
        } 
          
        public interface IFood 
        { 
            void Eat(); 
        } 
          
        public class Bread : IFood 
        { 
          
            public void Eat() 
            { 
                Console.WriteLine("Bread is delicious!"); 
            } 
        } 
          
        public class Sugar : IFood 
        { 
          
            public void Eat() 
            { 
                Console.WriteLine("Sugar is delicious!"); 
            } 
        } 
          
        public class FoodShop 
        { 
            public static IFood Sale(string foodName) 
            { 
                switch (foodName) 
                { 
                    case "Sugar": 
                        return new Sugar();                     
                    case "Bread": 
                        return new Bread(); 
                    default: 
                        throw new ArgumentException();                     
                } 
            } 
        }     
    } 
  • 相关阅读:
    Docker安装ngnix进行挂载
    Linux上传下载小工具
    uniapp——原生导航栏
    uniapp——scroll-view组件隐藏滚动条
    边框阴影——box-shadow
    uniapp-监听自定义跳转
    uniapp整屏滑动
    用伪类写圆点css
    Vue——生命周期
    uniapp多选按钮
  • 原文地址:https://www.cnblogs.com/profession/p/5073057.html
Copyright © 2011-2022 走看看