题目四:
简述工厂模式和观察者模式。写出抽象工厂或者观察者模式的代码。
答:
工厂模式,父类决定实例的生成方式,但并不决定所要生成的具体的类,具体的处理全部交给子类负责。这样就可以将生成实例的框架和实际负责生成实例的类解耦。
public abstract class Prodect
{
public abstract void use();
}
public abstract class Factory
{
public final Product create(String owner)
{
Product p = createProduct(owner);
registerProduct(p);
return p;
}
protected abstract Product createProduct(String owner);
protected abstract void registerProduct(Product product);
}
public class IDCard extends Product
{
private String owner;
IDCard(String owner)
{
Debug.Log(owner + "制作");
this.owner = owner;
}
public void use()
{
Debug.Log(owner + "使用");
}
public String getOwner()
{
return owner;
}
}
public class IDCardFactory extends Factory
{
private List owners = new ArrayList();
protected Product createProduct(String owner)
{
return new IDCard(owner);
}
protected void registerProduct(Product product)
{
owners.add(((IDCard)product).getOwner())
}
public List getOwners()
{
return owners;
}
}
public class Main
{
public static void main()
{
Factory factory = new IDCardFactory();
Product card1 = factory.create("A");
Product card2 = factory.create("B");
card1.use();
card2.use();
}
}
出自《图解设计模式——工厂模式》
观察者模式,在对象间定义一种一对多的依赖关系,以便当某对象的状态改变时,与它存在依赖关系的所有对象都能收到通知并自动更新。
出自《游戏编程模式》
这本的代码用C++写的
我觉得这位大佬写得更好一点。
unity里很重要的设计模式 - 观察者模式(Observer)
------
虽然我的老师说过,设计模式是需要有多年开发经验的人才能看懂,但是我不知道为什么好多面试笔试都喜欢考设计模式。毫无疑问的是,我在过去的一年里,用的最多的就是单例模式了,在创建数据库连接上面,用得滚瓜烂熟。不过在unity上却没有用过。
无论如何,设计模式的确是面向对象开发必学的一门课,无论看懂不看懂。