本文共 3299 字,大约阅读时间需要 10 分钟。
1、符合单一职责原则 需求端相互隔离
2、符合开闭原则 修改关闭,新增开放
简单工厂
package com.fen.dou.sjms.factory;public class SimpleFactory { public static void main(String[] args) { Product product = SimpleFactory.createProdcut("1"); product.method1(); } public static Product createProdcut(String type) { if (type.equals( "0" )) { return new ProductA(); } else if (type.equals( "1" )) { return new ProductA1(); } else { return null; } }}
工厂方法
package com.fen.dou.sjms.factory;public class FactoryMehtod { public static void main(String[] args) { Application application = new ConcreteProductA(); application.getObject().method1(); Application application1 = new ConcreteProductA1(); application.getObject().method1(); }}interface Product { public void method1();}// 具体实现class ProductA implements Product { public void method1() { System.out.println( "ProductA.methodA executed. " ); }}// 工厂方法具体实现类class ConcreteProductA extends Application { @Override Product createProduct() { return new ProductA(); }}class ProductA1 implements Product { public void method1() { System.out.println( "ProductA1.methodA1 executed. " ); }}class ConcreteProductA1 extends Application { @Override Product createProduct() { return new ProductA1(); }}abstract class Application { abstract Product createProduct(); Product getObject() { Product product=createProduct(); return product; }}
抽象工厂
package com.fen.dou.sjms.factory;public class AbstractFactory { public static void main(String[] args) { IDatabaseUtils iDatabaseUtils=new OracleDataBaseUtils(); IConnection connection=iDatabaseUtils.getConnection(); connection.connect(); ICommand command=iDatabaseUtils.getCommand(); command.command(); }}interface IConnection{ void connect();}interface ICommand{ void command();}interface IDatabaseUtils{ IConnection getConnection(); ICommand getCommand();}class MysqlConnection implements IConnection{ @Override public void connect() { System.out.println("mysql connected."); }}class OracleConnection implements IConnection{ @Override public void connect() { System.out.println("oracle connected."); }}class MysqlCommand implements ICommand{ @Override public void command() { System.out.println(" mysql command. "); }}class OracleCommand implements ICommand{ @Override public void command() { System.out.println("oracle command."); }}class MysqlDataBaseUtils implements IDatabaseUtils{ @Override public IConnection getConnection() { return new MysqlConnection(); } @Override public ICommand getCommand() { return new MysqlCommand(); }}class OracleDataBaseUtils implements IDatabaseUtils{ @Override public IConnection getConnection() { return new OracleConnection(); } @Override public ICommand getCommand() { return new OracleCommand(); }}
转载地址:http://dggez.baihongyu.com/