网站与博客
网站
class WebSite{
private String name = "";
public WebSite(String name) {
this.name = name ;
}
public void Use() {
System.out.println("网站分类" + name);
}
}
客户端代码
static void Main(String[] args) {
WebSite fx = new WebSite("产品展示");
fx.Use();
WebSite fy = new WebSite("产品展示")
fy.use();
WebSite fz = new WebSite("产品战术");
fz.Use();
WebSite f1 = new WebSite("博客");
f1.Use();
WebSite fn = new WebSite("博客")
fn.use();
WebSite fm = new WebSite("博客");
fm.Use();
享元模式的解释:运用共享技术有效的支持大量细粒度的对象。
//Flyweight 类
abstract class Flyweight{
public abstract void Operation(int extris);
}
class concreteFlyweight extends Flyweight{
public void operation(int rextr) {
System.out.println();
}
}
//UnsharedConcreteFlyWeight 类
class UnsharedConcreteFlyWeight extends FlyWeight{
public void Operation(int wer) {
System.out.println(wer);
}
}
class FlyweightFactory{
private hashtable flyweight = new Hashtable();
public FlyweightFactory() {
flyweight.add("x",new ConcreateFlyweight())
flyweight.add("y",new ConcreateFlyweight())
flyweight.add("z",new ConcreateFlyweight())
}
public Flyweight GetFlyweight(String key) {
return (Flyweight)flyweight;
}
}
网站共享代码:
abstract class WebSite{
public abstract void Use;
}
class ConcreteWebSite extends WebSite{
private String name = "";
public ConcreteWebSite(String name) {
this.name = name;
}
public void Use() {
System.out.println(name);
}
}
class WebSiteFactory{
private Hashtable flyweights = new Hashtable();
public WebSite GetWebSiteGategory(String key) {
if(!flyweights.Containkey(key)) {
flyweights.Add(key,new ConcreteWebSite(key));
}
}
}
内部状态与外部状态:
import java.util.Hashtable;
public class user{
private String name;
public user(String name) {
this.name = name;
}
public class WebSite{
public abstract void Use(User uer);
}
}
class ConcreteWebSite extends WebSite{
private String name = "";
public ConcreteWebSite(String name) {
this.name = name ;
}
public void use(User user) {
Console.WriteLine(name);
}
}
class WebSiteFactory{
private Hashtable<K, V> flyweights = new Hashtable();
//
public WebSite GetWebSiteCateGory(String key) {
if(!flyweights.contains(key))
flyWeight.Add(key,new ConcretaWebSite(key));
}
public int GetWebSiteCount() {
return flyweigts.count;
}
}