防止创建多个对象,共享代码。但有足够多的对象实例可以共享时才值得用。
将对象分成内部状态和外部状态,内部状态可以直接存储在享元对象中,外部状态由客户端存储或计算,当调用享元对象的操作时,再作为参数传过去。
举个例子:
1.创建外部状态类 User ,存储账号,名字等。
2.创建抽象享元类 Website。
3.创建具体享元类 ConcreteWebsite ,继承 Website,维护一个方法 Use(User user), 该方法接受用户类对象。
4.创建享元工厂 WebFactory, 创建并管理享元对象。