简单工厂
public class OperationFactory{public static Operation createOperate(String operate){Operation oper=null;switch(operate){case "+":oper=new OperationAdd();break;case "-":oper=new OperationSub();break;case "*":oper=new OperationMul();break;case "/":oper=new OperationDiv();break;}return oper;}}
根据传参来确定 new的对象,但是如果要增加“工厂”生产的产品种类(new新种类的对象),还是要修改工厂类的代码(switch分支)。工厂方法可以解决这个问题。
工厂方法
//工厂类接口interface IFactory{public Operation CreateOperation();}//具体工厂的实现类class AddFactory:IFactory{public Operation CreateOperation(){return new OperationAdd();}}class SubFactory:IFactory{public Operation CreateOperation(){return new OperationSub();}}.......
遵守了开闭原则,如果要增加新的“产品”,只需要新建对应的工厂类(实现工厂接口)和产品类(实现产品接口)即可。
抽象工厂
建造者模式
class Product{IList<String> parts=new List<String>();public void Add(String part){parts.Add(part);}}class Builder{public void BuildPartA();public void BuildPartB();public Product GetResult();}class ConcreteBuilder1:Builder{private Product product=new Product();@Overridepublic void BuildPartA(){product.Add("partA");}@Overridepublic void BuildPartB(){product.Add("partB");}@Overridepublic Product GetResult(){return product;}}//Builder的另一种实现class ConcreteBuilder2:Builder{........}class Director{public void Construct(Builder builder){builder.BuildPartA();builder.BuildPartB();}}
原型模式
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
参考:https://www.yuque.com/docs/share/b0f70f34-1a7e-41bb-9222-c46382a65bb3?# 《浅拷贝和深拷贝》
单例模式
保证一个类只有一个实例,并提供一个访问它的全局访问点。
参考:https://www.yuque.com/docs/share/c5bfe116-8ea2-4d35-9d34-9bdb09cece59?# 《单例的七种写法》
