设计模式——简单工厂

来源:互联网 发布:巨人网络注册 编辑:程序博客网 时间:2024/05/20 10:21
例子一:
package simpleFactory;public abstract class Operation {protected double NumberA;protected double NumberB;public double getNumberA(){return NumberA;}public double getNumberB(){return NumberB;}public void setNumberA(double n){NumberA = n;}public void setNumberB(double n){NumberB = n;}public abstract double getResult();}

package simpleFactory;public class Add extends Operation{@Overridepublic double getResult() {return NumberA + NumberB;}}
package simpleFactory;public class Minus extends Operation{@Overridepublic double getResult() {return NumberA - NumberB;}}
package simpleFactory;public class SimpleFactory {public static Operation createOperation(char o){switch(o){case '+':return new Add();case '-':return new Minus();default:return null;}}}
package simpleFactory;public class Client {public static void main(String[] args) {Operation add = SimpleFactory.createOperation('+');add.setNumberA(1);add.setNumberB(1);System.out.println(add.getResult());Operation minus = SimpleFactory.createOperation('-');minus.setNumberA(2);minus.setNumberB(3);System.out.println(minus.getResult());}}

例子二:

package simpleFactory2;public interface IUser {public void insert(String s);public String get(int id);}
package simpleFactory2;public class AccessUser implements IUser{@Overridepublic String get(int id) {System.out.println("AccessUser select from xx where ID = " + id);return null;}@Overridepublic void insert(String s) {System.out.println("insert into xx value " + s);}}
package simpleFactory2;public class SqlserverUser implements IUser{@Overridepublic String get(int id) {System.out.println("Sqlserver select from xx where ID = " + id);return null;}@Overridepublic void insert(String s) {System.out.println("Sqlserver insert into xx value " + s);}}
package simpleFactory2;public interface IFactory {public IUser createUser();}
package simpleFactory2;public class AccessFactory implements IFactory{@Overridepublic IUser createUser() {return new AccessUser();}}
package simpleFactory2;public class SqlserverFactory implements IFactory{@Overridepublic IUser createUser() {return new SqlserverUser();}}
package simpleFactory2;public class Client {public static void main(String[] args) {//IFactory factory = new SqlserverFactory();    IFactory factory = new AccessFactory();IUser user =  factory.createUser();user.insert("test");user.get(1);}}