zoukankan      html  css  js  c++  java
  • 设计模式——简单工厂

    工厂角色:

    package designpattern.creation.simplefactory;
    
    /*
     * 
     * 此处的工厂简单写成一个类,因为(简单工厂的工厂)不会有继承或拓展,可以不用写成接口。
     */
    public class Factory {
    
        public IProduct getProduct(String type) {
            // TODO Auto-generated method stub
            if (type.equals("A")) {
                return new ProductA();
            } else if(type.equals("B")) {
                return new ProductA();
            }
            /*
             * 如果需要增加产品,则修改此类,需要在此增加判断—— 这样就破坏了类的完整性
             * —— 对修改封闭,对拓展开放!
             */
            
            return null;
        }
    }

    产品角色:

    package designpattern.creation.simplefactory;
    
    public interface IProduct {
        void use();
    }
    
    
    package designpattern.creation.simplefactory;
    
    public class ProductA implements IProduct {
    
        public void use() {
            // TODO Auto-generated method stub
            System.out.println("ProductA.use()");
        }
    
    }
    
    
    package designpattern.creation.simplefactory;
    
    public class ProductB implements IProduct {
    
        public void use() {
            // TODO Auto-generated method stub
            System.out.println("ProductB.use()");
        }
    
    }

    客户端:

    package designpattern.creation.simplefactory;
    
    
    /**
     * 
     * 简单工厂三因素:
     * 1 工厂只有一个方法
     * 2 方法有一个参数(或多个)
     * 3 客户端通过向工厂的那个方法传入不同参数来获取对应的产品
     *
     */
    public class Client {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		IProduct product = new Factory().getProduct("A");
    		product.use();
    
    		IProduct product2 = new Factory().getProduct("A");
    		product2.use();
    	}
    
    }
    

      

    总结:

    1 简单,理解起来简单,客户调用简单

    2 破坏了开放封闭原则

  • 相关阅读:
    数据库
    数据库
    数据库
    数据库
    数据库
    数据库
    windows
    LeetCode : Word Pattern
    LeetCode : Perfect Number
    LeetCode : Minimum Depth of Binary Tree
  • 原文地址:https://www.cnblogs.com/FlyAway2013/p/3916819.html
Copyright © 2011-2022 走看看