几点说明

  1. 永远不要纠结于在什么时候使用什么模式
  2. 永远不要纠结于什么模式适用于什么情景
  3. 永远不要去死记任何的模式
  4. 并不是说,23种设计模式可以应付所有的问题,要知道,使用一种方法的时候,往往伴随着新问题的出现
  5. 只有最适合你当前所遇到问题的解决方案,而没有最适合的设计模式,任何一种设计模式在应用的时候,都应该根据问题的实际情况去做适当的改变,不然一定会陷入设计模式的陷阱之中

 

三种工厂的说明

简单工厂(SimpleFactory):定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类或接口。

工厂方法(FactoryMethod):定义一个用于创建对象的接口,让子类决定实例化哪一个类,使一个类的实例化延迟到了子类。

抽象工厂(AbstractFactory):提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们的具体类。

 

三种工厂的实现

注意:Singleton.SingletonOperateClass_1/2/3/4/5/6 是使用之前写的一个关于单例模式的笔记时创建的。

简单工厂的实现思路:在工厂类中,使用一个以「产品基类」作为返回值类型的方法,用于生产。这个方法需要有一个参数,用于表述需要创建的是哪一种「产品子类」。然后再在这个方法中进行判断,以返回相应的对象。

简单工厂的好处:通过使用工厂方法来创建对象,可以有效的解决在创建对象时耦合性过高的问题。如果我在客户类中,直接使用New来实例化产品类,那么,如果当我想使用另一种更好的类来替代之前的类的时候,我就得每一个客户类中都去修改。而使用工厂方法,就可以做到只修改这一个方法,从而实现低耦合性。当然,简单工厂的一个很致命的缺点,就是必须要知道传入什么以及会传出什么。这样对于类的扩展不是十分的方便。

public static Singleton.OperateBase getSingletonOperateClass(int selected) { switch(selected) { case 1: return Singleton.SingletonOperateClass_1.Operate; case 2: return Singleton.SingletonOperateClass_2.Single; case 3: return Singleton.SingletonOperateClass_3.Operate; case 4: return Singleton.SingletonOperateClass_4.Operate; case 5: return Singleton.SingletonOperateClass_5.Operate; case 6: return Singleton.SingletonOperateClass_6.Operate; default: return null; } }

相关文章:

  • 2022-12-23
  • 2023-03-07
  • 2022-03-09
  • 2021-04-06
  • 2021-06-03
  • 2021-06-02
  • 2021-07-18
猜你喜欢
  • 2021-10-30
  • 2021-11-08
  • 2021-09-24
  • 2021-05-29
  • 2022-01-31
  • 2022-12-23
相关资源
相似解决方案