//对于这种可能会不断变化的方法,最好的解决方案就是用接口 Interface Iprice { void Price_Count(); } //-----------计算价格的业务逻辑start //定义不同的结算类去实现他 Class Price1:Iprice { public void Price_Count() { //正常商品价格结算 } } //----------- Class Price2:Iprice { public void Price_Count() { //打折商品价格结算 } } //-------------计算价格的业务逻辑end Class PriceFactory { private int _usertype{get();set();} public PriceFactory(string usertype) { this._usertype=usertype; } public Iprice CreatePrice() { Iprice p; switch (_usertype) { case 1: p=new Price1(); break; case 2: p=new Price2(); break; default: p=new Price1(); break; } return p; } } //----------- //客户端调用 --usertype由客户端选择不同的类型决定 PriceFactory pf=new PriceFactory(usertype) Iprice p=pf.CreatePrice(); p.Price_Count(); //这个PriceFactory类就算一个简单的工厂类了,现在可以理解简单工厂了吗, //工厂是生产东西的,我们这里的工厂是专门生产跟计算价格有关的类的,最后返回的是一个统一的接口