使用工厂方法或类生成对象,替代直接new
对象只允许创建一个
全局共享和交换对象,工厂类将对象注册到注册类中
将不同的函数接口封装成统一的api,比如多数据库封装成统一接口
将一组特定的行为和算法封装成类,以适应某些特定的上下文环境
一个网站,根据男性和女性各自跳转到不同页面,并展示不同的广告
如果用if swhich case 则算硬编码
如果要增加其它类型判断,则所有if地方都要修改
如果用策略模式,只需要增加一种策略即可
当一个对象状态发生改变时,依赖它的全部对象都会收到通知
例如:注册模块,开始只是账户密码,后来新增短信验证,邮件验证
这些